คุณจะรัน rm แบบแห้งเพื่อดูว่าไฟล์ใดที่จะถูกลบ


87

ฉันต้องการดูว่าไฟล์ใดที่จะถูกลบเมื่อดำเนินการrmใน linux คำสั่งส่วนใหญ่ดูเหมือนจะมีตัวเลือกการรันแบบแห้งเพื่อแสดงเพียงข้อมูลดังกล่าว แต่ฉันไม่สามารถหาตัวเลือกดังกล่าวrmได้ เป็นไปได้ไหม


ฉันต้องการดูไฟล์ที่จะสร้างข้อผิดพลาดเนื่องจากขาดสิทธิ์
Simon Woodside

คำตอบ:


121

สมมติว่าคุณต้องการเรียกใช้:

rm *.txt

คุณสามารถเรียกใช้:

echo rm *.txt

หรือแม้แต่เพียงแค่:

echo *.txt

เพื่อดูว่าไฟล์rmจะลบเพราะมันเป็นเปลือกขยายไม่*.txtrm

rm -rเวลาเท่านั้นที่นี้จะไม่ช่วยให้คุณเป็น

หากคุณต้องการลบไฟล์และไดเรกทอรีซ้ำคุณสามารถใช้findแทนrm -rเช่น

find . -name "*.txt" -print

แล้วถ้ามันไม่สิ่งที่คุณต้องการเปลี่ยน-printไป-delete:

find . -name "*.txt" -delete

ค้นหาเป็นตัวเลือกที่ดี IMO treeและถ้าคุณต้องการการใช้งานที่นำเสนอกราฟิก
กึกก้อง

2
เกือบจะสมบูรณ์แบบ. find . -name "*.txt" -deleteดูเหมือนจะไม่ซ้ำแบบซ้ำ ลบไฟล์ทั้งหมด แต่ไม่ได้ลบไดเรกทอรีที่ระบุไว้ใน-print
ออสการ์ Godson

1
@OscarGodson สมมติว่าไดเรกทอรีว่างเปล่าหลังจากลบไฟล์คุณสามารถลบออกได้ด้วยfind . -type d -empty -delete
datguy

1
@OscarGodson - findจะไม่ลบไดเรกทอรีที่ยังคงมีไฟล์ (เทียบเท่าrm dir/โดยไม่ต้อง-r) คุณจะต้องล้างไดเรกทอรีแรก - หรือใช้findไป-exec rmพร้อมกับตัวเลือกที่เหมาะสมในการทำเช่นนี้ เช่นfind . -depth -name "*.txt" -exec rm -r {} +
shalomb

echo rm *.txtดูเหมือนว่าการใช้วิธีนี้จะมีข้อเสียเปรียบ มันแสดงผลลัพธ์ในรายการที่ต่อกัน (สตริงที่มีความยาวหนึ่งไฟล์หลังจากที่ก่อนหน้านี้) ซึ่งตรงข้ามกับรายการแนวตั้ง มีวิธีใดที่จะให้ได้ผลลัพธ์ที่จะแสดงในรายการแนวตั้ง (หนึ่งไฟล์ต่อบรรทัด)? (อัปเดต: ฉันเห็นว่าfindวิธีการดังกล่าวเป็นไปตามที่ฉันขอดังนั้นฉันจะดำเนินการด้วย)
แรงบันดาลใจ

16

คุณสามารถพูดได้:

rm -i

เพื่อเรียกใช้ในโหมดโต้ตอบดังนั้นrmจะแจ้งให้คุณยืนยันว่าควรลบแต่ละไฟล์หรือไม่ คุณสามารถตอบไม่ได้กับแต่ละไฟล์เพื่อดูว่าไฟล์ใดจะได้รับผลกระทบ


8
ค่อนข้างยากกับไฟล์จำนวนมาก
Cory Klein

9
ใช่ n | rm -i #comment เพื่อตอบสนองความยาวความคิดเห็นต่ำสุด
Joshua

4

คุณสามารถใช้lsเพื่อแสดงรายการไฟล์ทั้งหมดที่จะถูกลบโดยrm:

ls ../path/*.txt

หากคุณต้องการแสดงรายการเพื่อดูไฟล์ที่จะถูกลบด้วย recursive rmให้ใช้การ-Rตั้งค่าสถานะด้วยls:

ls -R ../path/*.txt

จุดดี. แม้ว่าคุณจะรู้ระดับการทำรังแล้วก็ตามคุณก็สามารถทำสิ่งนี้ได้โดยls */*/*.txt
Veneet Reddy

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