Bagaimana saya bisa menggunakan find untuk menemukan file tanpa direktori sebelumnya (./) dengan cara yang juga berfungsi dengan -exec?
Tujuan saya adalah untuk melihat log Apache untuk melihat apakah ada file yang telah diakses baru-baru ini. Inilah yang saya miliki sejauh ini:
find . -max-depth 1 -type d \
-exec grep \"GET /{}\" /var/log/apache2/blah.com \;
Saya menemukan solusi menggunakan -printf "% f \ n", tetapi itu tidak bekerja dengan -exec.
command-line
find
Luke
sumber
sumber
Jawaban:
sumber
Mencoba:
Atau, jika Anda ingin mengganti {} di dalamnya
find
perintah:sumber
Karena Anda tidak melakukan pencarian rekursif, tidak perlu menggunakan
find
, kecuali Anda hanya ingin memasukkan direktori dan bukan tautan simbolik ke direktori. Dengan asumsi tidak ada direktori yang namanya dimulai dengan titik (jika ada, gunakanfor x in .*/ */; do …
), berikut ini akan mencari nama semua direktori dan tautan simbolik ke direktori di direktori saat ini:Jika Anda melakukan pencarian rekursif, Anda dapat menghindari titik terkemuka dengan mencari dari
*
daripada.
(komentar yang sama seperti di atas mengenai nama yang dimulai dengan titik).Kemungkinan lain adalah untuk memposting output dari
find
. Ini sangat berguna dalam kombinasi dengan kemampuan grep untuk mencari beberapa pola yang dipisahkan oleh baris baru.Perhatikan bahwa dalam semua kasus Anda mengasumsikan tidak ada karakter dalam nama direktori yang akan lolos dalam log Apache. Ini dapat dipecahkan dengan postprocessing sedikit lebih lanjut dari
find
keluaran.sumber