ฉันต้องการค้นหาไฟล์ทั้งหมดที่เริ่มต้นด้วยชื่อNAME
ในแผนผังต้นไม้และลบไฟล์เหล่านี้ทั้งหมดโดยใช้คำสั่งเชลล์
ฉันต้องการค้นหาไฟล์ทั้งหมดที่เริ่มต้นด้วยชื่อNAME
ในแผนผังต้นไม้และลบไฟล์เหล่านี้ทั้งหมดโดยใช้คำสั่งเชลล์
คำตอบ:
เพื่อลบไฟล์ทั้งหมดที่ชื่อมีชื่อ --- คุณสามารถใช้
find -name . 'name*' -exec rm {} \;
grep
มี-exec
สวิทช์?
ลบไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันและไดเรกทอรีย่อยที่ชื่อไฟล์เริ่มต้นด้วย "foo":
$ find . -type f -name foo\* -exec rm {} \;
หมายเหตุ: ควรใช้ด้วยความระมัดระวัง - สำรองข้อมูลก่อน - ให้ทำในลักษณะแห้งก่อนเช่น
$ find . -type f -name foo\*
จะบอกชื่อของไฟล์ที่จะถูกลบ
find . -type f -name foo\* -delete
เคล็ดลับ
ฉันได้ลองวิธีนี้มันใช้งานได้สำหรับฉันลองคำสั่งด้านล่าง
rm -rf Example*
ที่นี่ "ตัวอย่าง" เป็นข้อความที่ใช้กันทั่วไปสำหรับไฟล์ทั้งหมด
คุณสามารถใช้find
:
find . -name "name*" -exec rm {} \;
ด้วยglobstar
ตัวเลือก (เปิดใช้งานด้วยshopt -s globstar
):
rm -f **/NAME*
**/
ขยายไป./
, */
, */*/
, */*/*/
ฯลฯ หากคุณมีไดเรกทอรีชื่อขึ้นต้นด้วยNAME
คำสั่งจะบ่นว่าrm
ไม่สามารถลบไดเรกทอรี แต่นั่นคือทั้งหมด
โปรดสังเกตว่านี่อาจเป็นข้อจำกัดความยาวบรรทัดคำสั่งหาก glob ตรงกับหลายไฟล์
อีกทางหนึ่งด้วยการร้องขอน้อยrm
ที่สุดเท่าที่จะเป็นไปได้ แต่ไม่ จำกัด ข้อจำกัดความยาวบรรทัดคำสั่ง:
find . -type f -name 'NAME*' -exec rm -f {} +
(สังเกตเห็น+
แทน\;
การปิด-exec
คำสั่ง)
find . -name 'foo'* -type f -delete
ดูเหมือนว่าคำตอบที่ง่ายที่สุด
คุณสามารถรันสิ่งนี้โดยไม่-delete
ตั้งค่าสถานะก่อนเพื่อดูว่าไฟล์ใดจะถูกลบ
ค้นหาหมายเลข "Inode" ของไฟล์ / โฟลเดอร์แล้วลบโดยใช้หมายเลข inode ด้านล่างเป็นตัวอย่าง:
ls -il
3407873 drwxr-xr-x. 2 root root 4096 Mar 30 07:49 –p
find . -inum 3407873 -exec rm -rf {} \;