ลบไฟล์ทั้งหมดที่ชื่อไฟล์มีสตริงเฉพาะหรือไม่


22

ฉันเปลี่ยนธีมเวิร์ดเพรสของฉัน ภาพที่เก่ากว่าสร้างภาพมากมายบนเซิร์ฟเวอร์ ชุดรูปแบบใหม่ของฉันไม่ต้องการพวกเขาดังนั้นฉันต้องการที่จะลบทั้งหมด ฉันจะทำสิ่งนั้นได้อย่างไร

ตัวอย่างเช่น:
รูปภาพเริ่มต้น:12_angry_men_lone_holdout.jpg

ฉันต้องการลบ:

12_angry_men_lone_holdout-290x166.jpg
12_angry_men_lone_holdout-700x300.jpg 
12_angry_men_lone_holdout-50x50.jpg

ใช้ Digitalocean, Ubuntu 13.10


บนชนิดเทอร์มินัลman rmเพื่อดูหน้าคู่มือของคำสั่ง rm
hmayag


ดูเหมือนว่าภาพเหล่านี้จะเป็นรูปขนาดย่อที่สร้างขึ้นโดยอัตโนมัติจากภาพที่อัพโหลดไปยังไลบรารีสื่อ WorldPress ของคุณ ถ้าเป็นเช่นนั้นอย่าลบไฟล์เหล่านั้นใน terminal บนเซิร์ฟเวอร์ เปิดหน้าผู้ดูแลระบบ WordPress ของคุณเปิด 'การตั้งค่า'> 'สื่อ' กำหนดขนาดภาพขนาดย่อที่ต้องการที่นั่น จากนั้นติดตั้งปลั๊กอินสร้างภาพย่อขนาดเล็ก และสร้างภาพขนาดย่อทั้งหมดใหม่ (อาจใช้เวลาสองสามนาทีขึ้นอยู่กับจำนวนภาพในไลบรารีสื่อของคุณ)
บ๊อบ

คำตอบ:


22

หากอยู่ในโฟลเดอร์เดียวกันให้ใช้ * wildcard เพื่อทำสิ่งต่อไปนี้:

rm *text*

textสตริงที่ชื่อไฟล์อยู่ที่ไหน


จริงๆแล้วมันไม่ใช่ไดเร็กตอรี่หนึ่งอัน แต่ฉันสามารถทำมันทีละตัวในตอนนี้ ขอขอบคุณ!
Ibrahim Mumcu

27

ใช้findเพื่อค้นหาและลบไฟล์ที่มี "text" ซ้ำในชื่อ:

find -type f -name '*text*' -delete

คุณอาจต้องการเรียกใช้find -type f -name '*text*'(ไม่มี-delete) ก่อนหน้านั้นเพื่อให้แน่ใจว่าคุณจะไม่ลบไฟล์ใด ๆ ที่คุณไม่ต้องการลบ


ในความเป็นจริงคุณสามารถวางไวลด์การ์ดได้ทุกที่ในสตริงการค้นหาดังนั้น-name '12_angry_men_lone_holdout-*.jpg'อาจเหมาะกว่าในกรณีของคุณ


คือไม่จำเป็นต้องแสดงถึงเส้นทางของไฟล์
Avinash Raj

@AvinashRaj หากพารามิเตอร์แรกไม่ใช่เส้นทางให้findค้นหาไดเรกทอรีการทำงานปัจจุบัน
n.st

บางคนใส่ หลังจากค้นหาเพื่อค้นหาภายในไดเรกทอรีการทำงานปัจจุบัน
Avinash Raj

1
@AvinashRaj นั่นจะซ้ำซ้อน ตามman find: หากไม่มีการกำหนดเส้นทางจะใช้ไดเรกทอรีปัจจุบัน
n.st

@AvinashRaj เปิดออกPOSIXข้อกำหนดสำหรับfindจริงไม่จำเป็นต้องใช้เส้นทาง การ.ตั้งค่าเริ่มต้นเป็นการแก้ไขที่เพิ่มโดย GNU find ถ้านี่คือUnix & Linuxฉันจะเพิ่มมันเข้าไปในคำตอบของฉัน แต่เนื่องจาก Ubuntu มาพร้อมกับ GNU ค้นหาตามค่าเริ่มต้นฉันจึงไม่สับสนนักที่มาใหม่เกินความจำเป็น ;)
n.st

1

ลองสิ่งนี้:

rm -rf 12_angry_men_lone_holdout-*

สิ่งนี้จะkeep 12_angry_men_lone_holdout.jpgและลบไฟล์ที่มีขนาด (290x166)

และโปรดจำไว้

rm -rf 12_angry_men_lone_holdout.*

จะลบไฟล์เริ่มต้นด้วยตามที่คุณต้องการ


0
find . -type f -name '*[0-9]x[0-9]*' -delete

รันสิ่งนี้ในไดเรกทอรีแม่ นี่จะเป็นการลบไฟล์ทั้งหมดที่มีตัวเลขตามด้วยอักขระ 'x' ตามด้วยตัวเลขอื่นในชื่อ

ยังต้องระวังนี่อาจลบไฟล์ต้นฉบับด้วยหากชื่อไฟล์มีรูปแบบด้านบน (ไม่น่าเป็นไปได้) เรียกใช้ก่อนโดยไม่ต้อง '-delete' เพื่อดูว่าคุณมีไฟล์ใด ๆ ที่มีชื่อดังกล่าวหรือไม่ หากเป็นเช่นนั้นคุณจะต้องค้นหารูปแบบที่เข้มงวดยิ่งขึ้น

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