Teknik yang paling sering saya gunakan adalah find | xargs. Misalnya, jika Anda ingin membuat setiap file dalam direktori ini dan semua subdirektori yang dapat dibaca dunia, Anda dapat melakukannya:
find . -type f -print0 | xargs -0 chmod go+r
find . -type d -print0 | xargs -0 chmod go+rx
The -print0pilihan berakhir dengan karakter NULL bukan spasi. The -0pilihan membagi input dengan cara yang sama. Jadi ini adalah kombinasi yang digunakan pada file dengan spasi.
Anda dapat menggambarkan rantai perintah ini dengan mengambil setiap output baris dengan finddan menempelkannya di akhir chmodperintah.
Jika perintah yang ingin Anda jalankan sebagai argumennya di tengah alih-alih di akhir, Anda harus sedikit kreatif. Sebagai contoh, saya perlu mengubah ke setiap subdirektori dan menjalankan perintah latemk -c. Jadi saya menggunakan (dari Wikipedia ):
find . -type d -depth 1 -print0 | \
xargs -0 sh -c 'for dir; do pushd "$dir" && latexmk -c && popd; done' fnord
Ini memiliki efek for dir $(subdirs); do stuff; done, tetapi aman untuk direktori dengan spasi di namanya. Selain itu, panggilan terpisah untuk stuffdibuat dalam shell yang sama, itulah sebabnya dalam perintah saya kita harus kembali ke direktori saat ini dengan popd.