ฉันต้องการค้นหาไฟล์ทั้งหมดที่มีนามสกุล. sql ในโฟลเดอร์และโฟลเดอร์ย่อย (เรียกซ้ำ)
ฉันจะทำสิ่งนี้ได้อย่างไร
ฉันต้องการค้นหาไฟล์ทั้งหมดที่มีนามสกุล. sql ในโฟลเดอร์และโฟลเดอร์ย่อย (เรียกซ้ำ)
ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
หรือ...
find $directory_name -name \*.sql
ตัวอย่างเช่น
find / -name \*.sql
หรือ
find ~ \*.sql
(โดยที่ ~ หมายถึง / home / your_username /) หรือ ...
find /usr/local/share/ \*.sql
และอื่น ๆ
รันสิ่งนี้ในบรรทัดคำสั่ง:
cd / && find | grep '\.sql$'
เปลี่ยน '/' เป็นไดเรกทอรีที่คุณต้องการค้นหา
find
คำสั่งสามารถทํางานได้โดยไม่ต้อง grep (โดยใช้ตัวเลือกพิเศษ) แต่ผมพบว่าการใช้งานดังกล่าวข้างต้นที่สะดวกมากขึ้น
ตามคำสั่งข้างต้น:
cd /
)find
)| grep '\.sql$'
)find
ได้กรองความสามารถไปแล้ว
ฉันรู้ว่านี่เป็นโพสต์เก่า แต่ฉันใหม่สวยที่นี้และฉันได้พบวิธีที่ง่ายในการค้นหาไฟล์ทั้งหมดของนามสกุลที่แน่นอนในไดเรกทอรีและไดเรกทอรีย่อยของเด็ก ๆ ก่อนอื่นคุณต้องไปที่ไฟล์parent Directory
นั้นfind . -name '*.sql'
และคุณจะพบไฟล์ทั้งหมดที่มีนามสกุล. sqlในไดเรกทอรีและไดเรกทอรีย่อย
ในกรณีของฉันฉันต้องการลบไฟล์. xmlทั้งหมดในไดเรกทอรีและไดเรกทอรีย่อยดังนั้นสิ่งที่ฉันทำเพิ่มเติมคือฉันได้เพิ่มการลบดังที่นี่find . -name '*.xml' | xargs rm
หวังว่าจะช่วยคนนี้ :)
find
เข้าใจ-delete
คำสั่ง rm
ไม่จำเป็นต้องเกี่ยวข้องกับ หรือคุณสามารถใช้คำสั่งเพื่อเรียกได้โดยตรงโดยไม่ต้องอ้อมผ่านท่อและ-exec
xargs
locate -br \\.sql$ | egrep '^/folder/path/'
หากยังไม่ได้ติดตั้งให้ติดตั้งก่อนหน้านี้ด้วย:
sudo apt install mlocate
mlocate.db
อินสแตนซ์ที่ทันสมัยซึ่งไม่ได้ตั้งค่าไว้ใน Ubuntu (ฉัน blieve) นอกจากนี้ทำไมไม่ง่าย ๆlocate '/folder/path/*.sql'
?
locate
มีการตั้งค่าที่แตกต่างจาก regex ที่ใช้ในegrep
locate
จับคู่นิพจน์ glob เหมือน/folder/path/*.sql
ไม่ใช่นิพจน์ทั่วไป
man locate
ฉันได้รับ-r, --regexp REGEXP - Search for a basic regexp REGEXP
ดังนั้นฉันคิดว่ามันเป็น regex อย่างไรก็ตามฉันลองใช้ "การแสดงออกทั่วโลก" ของคุณ แต่ไม่ได้ผลฉันขอโทษ
--regex
ไม่ได้ระบุไว้PATTERN
s สามารถมีตัวละครกลมตัว" ( แหล่งที่มา )