En sık kullandığım teknik find | xargs
. Örneğin, bu dizindeki her dosyayı ve tüm alt dizinlerini dünya tarafından okunabilir yapmak istiyorsanız, şunları yapabilirsiniz:
find . -type f -print0 | xargs -0 chmod go+r
find . -type d -print0 | xargs -0 chmod go+rx
-print0
Seçenek yerine alanı NULL karakteri ile sona erer. -0
Seçenek onun girişini aynı şekilde böler. Bu, boşluklu dosyalarda kullanılacak kombinasyon.
Bu komut zincirini her satır çıkışını alıp find
bir chmod
komutun sonuna yapıştırarak resmedebilirsiniz .
Sonunda değil, ortada argümanı olarak çalıştırmak istediğiniz komut biraz yaratıcı olmanız gerekir. Örneğin, her alt dizine geçip komutu çalıştırmam gerekiyordu latemk -c
. Bu yüzden kullandım ( Wikipedia'dan ):
find . -type d -depth 1 -print0 | \
xargs -0 sh -c 'for dir; do pushd "$dir" && latexmk -c && popd; done' fnord
Bunun etkisi vardır for dir $(subdirs); do stuff; done
, ancak adlarında boşluk bulunan dizinler için güvenlidir. Ayrıca, ayrı stuff
kabuklar aynı kabukta yapılır, bu yüzden komutumda geçerli dizine geri dönmek zorundayız popd
.