ฉันจะสัมผัสไฟล์ซ้ำ ๆ ที่ตรงกับรูปแบบได้อย่างไร


8

ภายในไดเรกทอรี ~ / docs ของฉันฉันต้องการ "สัมผัส" ไฟล์ทั้งหมดที่ลงท้ายด้วย. txt

ฉันจะทำสิ่งนี้ได้อย่างไร

คำตอบ:


20

ด้วยfind:

find ~/docs -name "*.txt" -exec touch {} \;
  • คุณค้นหา ~/docs
  • nameตัวเลือกที่จะตรงกับทุกtxtไฟล์ -  execจะรันคำสั่งtouchที่ชื่อไฟล์ซึ่งถูกแทนที่ใน{}
  • \;สิ้นสุดคำสั่งและtouchจะถูกเรียกหนึ่งครั้งสำหรับแต่ละไฟล์ที่พบ

บันทึก:

  • การเปลี่ยนแปลงเล็กน้อย\+ในตอนท้ายสร้างคำสั่งเดียวเพื่อให้ทำงานtouchกับไฟล์เหล่านี้ทั้งหมดในครั้งเดียว สิ่งนี้ไม่สามารถทำได้กับคำสั่งทั้งหมด แต่สามารถใช้งานได้touchและช่วยให้คุณโทรได้ไม่กี่ครั้งหากคุณมีไฟล์จำนวนมากที่ได้รับผลกระทบ

4
{} \+จะดีกว่าที่นี่ ... 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เอกสารประกอบ
Peter.O

@ Peter.O จริงเพียงนิสัยของฉันที่จะใช้ไวยากรณ์อื่น ๆ
slhck

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