ls แบบเรียกซ้ำพร้อมเงื่อนไข


16

เหตุใดฉันจึงไม่สามารถใช้คำสั่งเช่นนี้เพื่อค้นหาไฟล์ pdf ทั้งหมดในไดเรกทอรีและไดเรกทอรีย่อย ฉันต้องทำอย่างไร? (ฉันใช้ทุบตีใน Ubuntu)

ls -R *.pdf

แก้ไข

ฉันจะลบไฟล์เหล่านี้ได้อย่างไร

คำตอบ:


22

เหตุใดฉันจึงไม่สามารถใช้คำสั่งเช่นนี้เพื่อค้นหาไฟล์ pdf ทั้งหมดในไดเรกทอรีและไดเรกทอรีย่อย

สัญลักษณ์แทน*.pdfในคำสั่งของคุณมีการขยายตัวbashไปยังไฟล์ที่ตรงกันทั้งหมดในไดเรกทอรีปัจจุบันก่อนที่จะlsดำเนินการ


ฉันต้องทำอย่างไร? (ฉันใช้ทุบตีใน Ubuntu)

ค้นหาคือคำตอบของคุณ

find . -name \*.pdf

เป็นรายการแบบเรียกซ้ำของไฟล์ pdf -inameตรงกับกรณีตายดังนั้น

find . -iname \*.pdf

แสดงรายการไฟล์. pdf ทั้งหมดรวมถึงตัวอย่าง foo.PDF

นอกจากนี้คุณยังสามารถใช้ ls เพื่อ จำกัด จำนวนโฟลเดอร์ย่อยได้เช่นกัน

ls *.pdf */*.pdf

เพื่อค้นหาไฟล์ pdf ทั้งหมดในโฟลเดอร์ย่อย (ตรงกับ bar / foo.pdf ไม่ใช่ bar / foo / asdf.pdf และไม่ใช่ foo.PDF)

หากคุณต้องการลบไฟล์ที่พบด้วย find คุณสามารถใช้

find . -iname \*.pdf -delete

1
ในกรณีที่คุณต้องการเอาต์พุตคล้ายกับls -lคำสั่งแสดงขนาดไฟล์ความเป็นเจ้าของวันที่ ฯลฯ คุณสามารถใช้findกับ-lsตัวเลือกเช่นfind . -name \*.pdf -ls
RFVoltolini

2

ดังที่คนอื่น ๆ พูดไว้คำตอบคือคำตอบ

ตอนนี้เพื่อตอบส่วนอื่น ๆ

  • ฉันจะลบไฟล์เหล่านี้ได้อย่างไร

    หา -iname * .pdf -exec rm {} \;

ควรทำอย่างไร


2
คุณจำเป็นต้องอ้างอิงคำบอกกล่าวของคุณเพื่อป้องกันไม่ให้มีการขยายก่อนกำหนด
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

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