Bagaimana cara menyentuh file secara rekursif yang cocok dengan suatu pola

8

Dalam direktori ~ / docs saya, saya ingin "menyentuh" ​​semua file yang diakhiri dengan .txt

Bagaimana saya bisa melakukan ini?

Steve McLeod
sumber

Jawaban:

20

Dengan find:

find ~/docs -name "*.txt" -exec touch {} \;
  • Anda mencari di ~/docs
  • The namepilihan akan cocok dengan semua txtfile -  execakan mengeksekusi perintah touchpada nama file, yang diganti di{}
  • \;mengakhiri perintah dan touchakan dipanggil sekali untuk setiap file yang ditemukan

catatan:

  • Sedikit variasi, \+pada akhirnya membangun satu perintah tunggal untuk dijalankan touchpada semua file ini sekaligus. Ini tidak mungkin dengan semua perintah, tetapi berfungsi untuk touchdan menghemat beberapa panggilan jika Anda memiliki banyak file yang terpengaruh.
slhck
sumber
4
{} \+akan lebih baik di sini ... touchdapat menangani banyak nama file pada baris perintahnya, jadi misalnya, dengan 10 ribu file dan {} \; 10 ribu panggilan akan dibuat ke touch... Menggunakan hanya {} \+akan memanggil touchsekali (tergantung pada memori yang tersedia) ... Di sini adalah kutipan dari find ini man-halaman: -exec command {} + ... The command line is built in much the same way that xargs builds its command lines. Ada lebih banyak detail dalam man finddokumentasi.
Peter.O
@ Peter.O Benar, hanya kebiasaan saya untuk menggunakan sintaks lainnya.
slhck
@ Slhck: Dan jauh lebih lambat dengan overhead yang lebih tinggi.
Hello71