ฉันต้องการดูว่าไฟล์ใดที่จะถูกลบเมื่อดำเนินการrm
ใน linux คำสั่งส่วนใหญ่ดูเหมือนจะมีตัวเลือกการรันแบบแห้งเพื่อแสดงเพียงข้อมูลดังกล่าว แต่ฉันไม่สามารถหาตัวเลือกดังกล่าวrm
ได้ เป็นไปได้ไหม
ฉันต้องการดูว่าไฟล์ใดที่จะถูกลบเมื่อดำเนินการrm
ใน linux คำสั่งส่วนใหญ่ดูเหมือนจะมีตัวเลือกการรันแบบแห้งเพื่อแสดงเพียงข้อมูลดังกล่าว แต่ฉันไม่สามารถหาตัวเลือกดังกล่าวrm
ได้ เป็นไปได้ไหม
คำตอบ:
สมมติว่าคุณต้องการเรียกใช้:
rm *.txt
คุณสามารถเรียกใช้:
echo rm *.txt
หรือแม้แต่เพียงแค่:
echo *.txt
เพื่อดูว่าไฟล์rm
จะลบเพราะมันเป็นเปลือกขยายไม่*.txt
rm
rm -r
เวลาเท่านั้นที่นี้จะไม่ช่วยให้คุณเป็น
หากคุณต้องการลบไฟล์และไดเรกทอรีซ้ำคุณสามารถใช้find
แทนrm -r
เช่น
find . -name "*.txt" -print
แล้วถ้ามันไม่สิ่งที่คุณต้องการเปลี่ยน-print
ไป-delete
:
find . -name "*.txt" -delete
tree
และถ้าคุณต้องการการใช้งานที่นำเสนอกราฟิก
find . -name "*.txt" -delete
ดูเหมือนจะไม่ซ้ำแบบซ้ำ ลบไฟล์ทั้งหมด แต่ไม่ได้ลบไดเรกทอรีที่ระบุไว้ใน-print
find . -type d -empty -delete
find
จะไม่ลบไดเรกทอรีที่ยังคงมีไฟล์ (เทียบเท่าrm dir/
โดยไม่ต้อง-r
) คุณจะต้องล้างไดเรกทอรีแรก - หรือใช้find
ไป-exec rm
พร้อมกับตัวเลือกที่เหมาะสมในการทำเช่นนี้ เช่นfind . -depth -name "*.txt" -exec rm -r {} +
echo rm *.txt
ดูเหมือนว่าการใช้วิธีนี้จะมีข้อเสียเปรียบ มันแสดงผลลัพธ์ในรายการที่ต่อกัน (สตริงที่มีความยาวหนึ่งไฟล์หลังจากที่ก่อนหน้านี้) ซึ่งตรงข้ามกับรายการแนวตั้ง มีวิธีใดที่จะให้ได้ผลลัพธ์ที่จะแสดงในรายการแนวตั้ง (หนึ่งไฟล์ต่อบรรทัด)? (อัปเดต: ฉันเห็นว่าfind
วิธีการดังกล่าวเป็นไปตามที่ฉันขอดังนั้นฉันจะดำเนินการด้วย)
คุณสามารถพูดได้:
rm -i
เพื่อเรียกใช้ในโหมดโต้ตอบดังนั้นrm
จะแจ้งให้คุณยืนยันว่าควรลบแต่ละไฟล์หรือไม่ คุณสามารถตอบไม่ได้กับแต่ละไฟล์เพื่อดูว่าไฟล์ใดจะได้รับผลกระทบ
คุณสามารถใช้ls
เพื่อแสดงรายการไฟล์ทั้งหมดที่จะถูกลบโดยrm
:
ls ../path/*.txt
หากคุณต้องการแสดงรายการเพื่อดูไฟล์ที่จะถูกลบด้วย recursive rm
ให้ใช้การ-R
ตั้งค่าสถานะด้วยls
:
ls -R ../path/*.txt
ls */*/*.txt
-R
ตัวเลือก