ค้นหาชื่อไฟล์ที่มีรูปแบบบางอย่างในบรรทัดคำสั่งของ Windows หรือไม่


11

พยายามค้นหาไฟล์ใด ๆ ที่มีรูปแบบบางอย่างในไดเรกทอรีและไดเรกทอรีย่อย ฉันเหนื่อย:

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

หวังว่าจะพบไฟล์เช่น

abc.txt.r12222
tjy.java.r9994

โดยที่หมายเลขจะถูกต่อท้ายหลังตัวอักษร r ทำโดย SVN

ผมทำอะไรผิดหรือเปล่า?


3
ยินดีต้อนรับสู่ SU! บนไซต์ stackexchange เมื่อคำตอบช่วยคุณวิธีการขอบคุณผู้คนก็คือเลิกโหวตคำตอบของพวกเขาและยอมรับมัน (โดยคลิกที่เครื่องหมายถูกที่ด้านซ้ายของคำตอบ) ถ้ามันแก้ปัญหาของคุณได้ ฉันแค่พูดเพราะคุณดูเหมือนจะไม่ยอมรับคำตอบที่คุณได้รับสำหรับคำถามของคุณ
terdon

คำตอบ:


10

ฉันเพิ่งตอบคำถามนี้ใน Stack Overflow สองสามวันที่ผ่านมา /programming/15648679/find-text-string-or-part-of-text-with-dot-in-grepwin/15648872#15648872

ในกรณีของคุณมันจะดูเหมือน:

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

ปรับปรุง

The * ในอีกตัวอย่างหนึ่ง ".r [0-9] * $" ยังค้นหาระเบียนที่ลงท้ายด้วย 'r' เนื่องจาก * quantifier หมายถึง 0 หรือมากกว่า


สวัสดี cpattersonv1 - ขอบคุณสำหรับการตอบสนอง dir * / s / b | findstr \ .r [0-9] * $ works
chz

ดูเหมือนว่า findstr ไม่รู้จักสัญลักษณ์หนึ่งตัวหรือหลายตัว '+'
Scott Chu เมื่อ

@ScottChu เริ่มคำถามใหม่ด้วยตัวอย่าง (ฉันตอบเมื่อ 5 ปีที่แล้ว)
AbsoluteƵERØ

0

ข้อเสนอแนะของฉันคือให้คุณทำเช่นนั้นgrep- ยูทิลิตี้สำหรับระบบที่เหมือน UNIX ที่ได้รับการพอร์ตไปยัง Windows และสามารถจับคู่บรรทัดโดยใช้นิพจน์ทั่วไป

grepมาพร้อมกับแพคเกจ MSYS MinGW ของการติดตั้งที่สามารถพบได้ที่นี่ (ติดตั้ง MSYS เท่านั้น)

จากนั้นคุณจะต้องเพิ่มเครื่องมือ MSYS ลงในตัวแปร PATH ของคุณไดเรกทอรี dafeult สำหรับ MSYS คือ C:\MinGW\msys\1.0\bin

ในที่สุดคุณสามารถทำ serach ของคุณด้วยคำสั่งนี้:

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

... ซึ่งหมายถึง: "รับเอาท์พุทls -a(รายชื่อไฟล์รวมถึงไฟล์ที่ซ่อนอยู่) และส่งต่อไปให้grepตรงกับบรรทัดที่มีลักษณะดังนี้. r [0-9] * (มีอักขระอย่างน้อยหนึ่งตัวที่เป็นสัญลักษณ์ของแต่ละดอกจัน")


สวัสดี gronostaj ขอบคุณสำหรับการตอบสนอง; ฉันพยายาม$ 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

สวัสดีฉันยังคงไม่สามารถรับชื่อพา ธ แบบเต็มของชื่อไฟล์ได้ ฉันจะทำอย่างไร เช่นc:\pager\test.jar.r46521ตรงข้ามกับ (อินพุตมาตรฐาน): test.jar.r46521
chz

ls | grep เหมือนกับ dir | findstr ใน Windows
AbsoluteƵERØ

0

คุณสามารถลองสิ่งนี้:

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

findstr /?สำหรับความช่วยเหลือประเภท


สวัสดี mfm4aa ขอบคุณที่ตอบกลับ - ดูเหมือนจะใช้งานไม่ได้ ฉันได้ลองชุดค่าผสมทั้งหมดแล้วและไม่มีใครให้คำตอบที่ระบุไว้เช่น: อินไลน์C:\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

โปรดลอง:C:\Temp>dir /aa| findstr .r[0-9]*$
Endoro

สวัสดี mfm ขอบคุณสำหรับการเขียน - ฉันยังไม่สามารถหาได้C:\Temp>dir /aa | findstr .r[0-9]*$ File Not Found
chz

:) dir /aa| findstr .r[0-9]*$เพียงแค่พิมพ์ ทำงานได้ที่นี่ ...
Endoro

สวัสดี Endoro ขอบคุณสำหรับการตอบสนอง มันใช้งานไม่ได้ - มันบอกว่า File Not Found
chz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.