ฉันมีโฟลเดอร์หลักชื่อ "parent_folder" ที่มีโฟลเดอร์ย่อยจำนวนมากในโฟลเดอร์ย่อยเหล่านี้เป็นไฟล์ชื่อ "foo.mp4"
ฉันสามารถค้นหาไฟล์เหล่านี้ได้อย่างง่ายดายโดยทำสิ่งนี้:
mymacbook:parent_folder username$ find ./ -name "foo.mp4" -exec echo {} \;
ตอนนี้จะส่งคืนพา ธ ของแต่ละไฟล์โดยสัมพันธ์กับ parent_folder /
./path/to/foo.mp4
ฉันจะกลับไปยังเส้นทางที่ไม่มีชื่อไฟล์ได้อย่างไร
find ./ -name "foo.mp4" -printf "%h\n"
จะพิมพ์พา ธ ไปยังไฟล์แต่ละไฟล์ที่พบ (หนึ่งต่อบรรทัด) มากกว่าปกติไม่มีใครใช้-exec echo {}
ดังนั้นจึงมี-print
(ค่าเริ่มต้นแม้ละเว้น) หรือprintf
การกระทำ
-printf
เป็น GNU เท่านั้น OP กล่าวถึง OS / X (ระบบ BSD)
-printf
%h
ไดเรกทอรีชั้นนำของชื่อไฟล์ (ทั้งหมดยกเว้นองค์ประกอบสุดท้าย) หากชื่อไฟล์ไม่มีเครื่องหมายสแลช (เนื่องจากอยู่ในไดเรกทอรีปัจจุบัน) ตัวระบุ% h จะขยายเป็น "." .