ฉันต้องการดูว่าไฟล์ใดที่จะถูกลบเมื่อดำเนินการrmใน linux คำสั่งส่วนใหญ่ดูเหมือนจะมีตัวเลือกการรันแบบแห้งเพื่อแสดงเพียงข้อมูลดังกล่าว แต่ฉันไม่สามารถหาตัวเลือกดังกล่าวrmได้ เป็นไปได้ไหม
ฉันต้องการดูว่าไฟล์ใดที่จะถูกลบเมื่อดำเนินการrmใน linux คำสั่งส่วนใหญ่ดูเหมือนจะมีตัวเลือกการรันแบบแห้งเพื่อแสดงเพียงข้อมูลดังกล่าว แต่ฉันไม่สามารถหาตัวเลือกดังกล่าวrmได้ เป็นไปได้ไหม
คำตอบ:
สมมติว่าคุณต้องการเรียกใช้:
rm *.txt
คุณสามารถเรียกใช้:
echo rm *.txt
หรือแม้แต่เพียงแค่:
echo *.txt
เพื่อดูว่าไฟล์rmจะลบเพราะมันเป็นเปลือกขยายไม่*.txtrm
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ตัวเลือก