Temukan nama file dengan pola tertentu di baris perintah Windows?


10

Mencoba menemukan file dengan pola tertentu dalam direktori dan subdirektori. Saya mencoba:

C:\test\workspace>dir *.*.r[0-9]* /s /b
File Not Found

dengan harapan menemukan file seperti

abc.txt.r12222
tjy.java.r9994

Di mana nomor ditambahkan setelah huruf r, dilakukan oleh SVN.

Apa yang saya lakukan salah?


3
Selamat datang di SU! Di situs stackexchange, ketika sebuah jawaban telah membantu Anda, cara untuk berterima kasih kepada orang adalah dengan meningkatkan jawaban mereka dan menerimanya (dengan mengklik tanda centang di sebelah kiri jawaban) jika itu memecahkan masalah Anda. Saya hanya mengatakan karena Anda sepertinya tidak menerima jawaban yang Anda terima untuk pertanyaan Anda.
terdon

Jawaban:


9

Saya baru saja menjawab ini di Stack Overflow beberapa hari yang lalu. /programming/15648679/find-text-string-or-part-of-text-with-dot-in-grepwin/15648872#15648872

Dalam kasus Anda akan terlihat seperti:

dir * /s/b | findstr \.r[0-9]+$

Memperbarui

* Dalam salah satu contoh lain ".r [0-9] * $" juga menemukan catatan yang berakhiran 'r' karena * kuantifier berarti 0 atau lebih.


Hai cpattersonv1 - terima kasih telah merespons dir * / s / b | findstr \ .r [0-9] * $ works
chz

findstr tampaknya tidak mengenali simbol 1 atau banyak '+'
Scott Chu

@ScottChu memulai pertanyaan baru dengan sebuah contoh. (Saya menjawab ini 5 tahun yang lalu.)
AbsoluteƵERØ

0

Saran saya untuk Anda adalah melakukannya dengan grep- utilitas untuk sistem mirip UNIX yang telah porting ke Windows dan dapat mencocokkan garis menggunakan ekspresi reguler.

grepsudah termasuk dalam paket MSYS MinGW, penginstal dapat ditemukan di sini . (hanya instal MSYS)

Maka Anda harus menambahkan alat MSYS ke variabel PATH Anda, direktori dafeult untuk MSYS C:\MinGW\msys\1.0\bin

Akhirnya Anda dapat melakukan serach Anda dengan perintah ini:

ls -a | grep ^.+\..+\.r[0-9]+$

... yang berarti: "mendapatkan output dari ls -a(file daftar termasuk file tersembunyi) dan menyebarkannya ke grep, garis pertandingan yang terlihat seperti . .R [0-9] * (dengan setidaknya satu karakter dilambangkan oleh masing-masing tanda bintang)".


hai gronostaj terima kasih atas tanggapannya; Saya mencoba$ ls -R | grep -H ^.*[0-9]$ (standard input):res.jar.r469621 (standard input):res.jar.r464460 (standard input):test.jar.r46521 (standard input):test.jar.r46970
chz

Hai, saya masih belum bisa mendapatkan nama path lengkap dari nama file; bagaimana aku melakukan itu ? misalnya c:\pager\test.jar.r46521sebagai kebalikan dari (input standar): test.jar.r46521
chz

ls | grep sama dengan dir | findstr di Windows.
AbsoluteƵERØ

0

Anda dapat mencoba ini:

dir /a| findstr .r[0-9]*$

Untuk bantuan, ketik findstr /?.


Hai mfm4aa terima kasih telah merespons - sepertinya tidak berfungsi; Saya sudah mencoba semua kombinasi dan tidak ada yang memberikan jawaban semut yang terdaftar: Misalnya inlineC:\Temp>findstr /S /B [0-9] . C:\Temp>findstr /S /B r[0-9]$ . C:\Temp>findstr /S /B $.*r[0-9]$ C:\Temp>findstr /S /B $.*r*$ C:\Temp>findstr /S /B $.*r..*$ C:\Temp>findstr /S /B $.*r\..*$ C:\Temp>findstr /S /B /R $.*r\..*$ C:\Temp>findstr /S /B /R "$.*\..r[0-9]*$ C:\Temp>findstr /S /B /R "$.*\..r[0-9]*$" C:\Temp>findstr /S /B /R "$.*\..r[0-9]*$" . C:\Temp>findstr /S /B /R "$.*\..r[0-9]$" . C:\Temp>findstr /S /B /R "$.*[0-9]*" . C:\Temp>findstr /S /B /R "$*[0-9]*" .
chz

Silakan coba:C:\Temp>dir /aa| findstr .r[0-9]*$
Endoro

Hai mfm terima kasih untuk menulis - saya masih tidak dapat menemukanC:\Temp>dir /aa | findstr .r[0-9]*$ File Not Found
chz

:) cukup ketik dir /aa| findstr .r[0-9]*$. Itu bekerja di sini ...
Endoro

Hai Endoro, terima kasih atas tanggapannya. Tidak berfungsi - katanya File Tidak Ditemukan
chz
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.