Sesuatu seperti berikut ini adalah apa yang saya cari, tetapi kode saya tidak berfungsi, tidak peduli bagaimana saya melarikan diri {}
dan+
;
find ./ -maxdepth 1 -type d -name '.*' -exec \
find {} -maxdepth 1 -type f -name '*.ini' -exec \
md5sum \{\} \\; \;
Setelah melihat ini Unix - & - pertanyaan Linux , saya menemukan bahwa karya-karya kode berikut, tetapi tidak bersarang menemukan seperti itu, dan saya menduga ada cara yang lebih baik untuk melakukan pekerjaan tertentu.
find ./ -maxdepth 1 -type d -name '.*' \
-exec bash -c 'for x; do
find "$x" -maxdepth 1 -type f -name "*.ini" \
-exec md5sum \{\} \;; \
done' _ {} \+
Apakah ada cara untuk membuat sarang find -exec
tanpa harus menggunakan shell (seperti di atas), dengan semua kutipan aneh dan kendala lolos?
Atau dapatkah ini dilakukan secara langsung dalam satu perintah find, menggunakan campuran dari banyak parameternya?
find
, tetapi jika find
tidak bisa melakukan ini, lalu mengapa find
begitu dihormati (?) Sebagai alat- untuk digunakan untuk mencari file? ... Saya secara subseqeuntly menemukan bahwa find ./ -maxdepth 2 -path '.*/*.ini' -type f -exec md5sum {} \+
berfungsi dengan baik dalam situasi saya (referensi jw013 untuk -prune
membawa saya ke ini di halaman manual), tapi saya bertanya-tanya apakah itu metode yang kuat (dalam genera). Saya tidak pernah benar-benar menggunakan find
(dalam waktu kurang dari satu tahun Linux) karena locate
telah melakukan hampir semua yang saya butuhkan, jadi itu adalah wilayah yang tidak dikenal.
-path
uji persis apa yang akan saya sarankan. Dengan ini, Anda harus dapat melakukan semua yang Anda inginkan (maaf untuk asosiasi Ace Of Base;))