ฉันต้องการลบไฟล์ทั้งหมดที่มีชื่อที่กำหนดในไดเรกทอรีย่อยทั้งหมดของโฮมไดเร็กตอรี่ของฉัน
ฉันเหนื่อย:
rm -r file
ในโฮมไดเร็กตอรี่ของฉัน, แต่มันไม่ทำงานเพราะไฟล์นั้นไม่มีอยู่ในไดเรกทอรีนั้น.
ฉันต้องการลบไฟล์ทั้งหมดที่มีชื่อที่กำหนดในไดเรกทอรีย่อยทั้งหมดของโฮมไดเร็กตอรี่ของฉัน
ฉันเหนื่อย:
rm -r file
ในโฮมไดเร็กตอรี่ของฉัน, แต่มันไม่ทำงานเพราะไฟล์นั้นไม่มีอยู่ในไดเรกทอรีนั้น.
คำตอบ:
find . -name "filename" -delete
เนื่องจากคำตอบของ @ tante อย่างละเอียดคุณอาจต้องการให้รายการไฟล์ที่ใช้นั้นถูกต้องก่อนที่จะลบไฟล์เหล่านั้น:
find <source_dir> -name <filename> -print
หากการตรวจสอบแสดงรายการที่ถูกต้องแล้ว
find <source_dir> -name <filename> -delete
ตัวเลือกอื่นหากต้องการสิ่งนี้ในหลาย ๆ ไดเรกทอรีโดยใช้ไดเร็กทอรีการพักชั่วคราว:
mkdir <dest_dir>
for i in <list_of_directories>
do
find "$i" -name <filename> -exec /bin/mv {} <dest_dir>
done
# check dest_dir
ls dest_dir
rm -rf <dest_dir>
เช่นเคยโปรดตรวจสอบความถูกต้องของสคริปต์ใด ๆ ก่อนดำเนินการและมีการสำรองข้อมูลอยู่เสมอในกรณีที่มีข้อผิดพลาดเกิดขึ้น