ภายในไดเรกทอรี ~ / docs ของฉันฉันต้องการ "สัมผัส" ไฟล์ทั้งหมดที่ลงท้ายด้วย. txt
ฉันจะทำสิ่งนี้ได้อย่างไร
ภายในไดเรกทอรี ~ / docs ของฉันฉันต้องการ "สัมผัส" ไฟล์ทั้งหมดที่ลงท้ายด้วย. txt
ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
ด้วยfind
:
find ~/docs -name "*.txt" -exec touch {} \;
~/docs
name
ตัวเลือกที่จะตรงกับทุกtxt
ไฟล์ - exec
จะรันคำสั่งtouch
ที่ชื่อไฟล์ซึ่งถูกแทนที่ใน{}
\;
สิ้นสุดคำสั่งและtouch
จะถูกเรียกหนึ่งครั้งสำหรับแต่ละไฟล์ที่พบบันทึก:
\+
ในตอนท้ายสร้างคำสั่งเดียวเพื่อให้ทำงานtouch
กับไฟล์เหล่านี้ทั้งหมดในครั้งเดียว สิ่งนี้ไม่สามารถทำได้กับคำสั่งทั้งหมด แต่สามารถใช้งานได้touch
และช่วยให้คุณโทรได้ไม่กี่ครั้งหากคุณมีไฟล์จำนวนมากที่ได้รับผลกระทบ
{} \+
จะดีกว่าที่นี่ ...touch
สามารถจัดการชื่อไฟล์จำนวนมากในบรรทัดคำสั่งของมันดังนั้นตัวอย่างกับ 10,000 ไฟล์และ{} \;
10,000 การโทรจะทำtouch
... การใช้{} \+
จะโทรtouch
เพียงครั้งเดียว (ขึ้นอยู่กับหน่วยความจำที่มีอยู่) ... ที่นี่ ตัดตอนมาจากการค้นหาของ-exec command {} + ... The command line is built in much the same way that xargs builds its command lines
มนุษย์หน้านี้: มีรายละเอียดเพิ่มเติมในman find
เอกสารประกอบ