Saya perlu menemukan gambar, katakanlah ABC.jpg, yang saya tahu akan diprogram ke dalam direktori bernama ABC_MPSC. Saya sudah mencoba:
cd /
find . -name "ABC_MPSC/ABC.jpg"
Tapi itu tidak mengembalikan apa-apa (saya benar-benar tahu di mana yang saya cari, jadi saya tahu itu ada). Apakah ada perintah find yang memungkinkan saya tidak perlu mencari secara manual?
locate
, yang seharusnya jauh lebih cepat, tetapi hanya berfungsi jika file sudah ada saatupdatedb
terakhir kali dijalankan.Jawaban:
Ada
-path
predikat yang berguna di sini:The POSIX deskripsi untuk predikat yaitu:
Alasan Anda
-name "ABC_MPSC/ABC.jpg"
gagal adalah karena-name
predikat:Dengan kata lain,
-name
tidak pernah melihat direktori nama file saat ini, hanya nama file dasar itu sendiri (ABC.jpg, misalnya).sumber
Dua cara (selain menggunakan
-path
):Cari direktori, lalu deteksi file:
Ini bergantung pada
find
implementasi untuk memperluas{}
ke pathname saat ini dari direktori yang ditemukan, meskipun sudah digabungkan dengan/ABC.jpg
(itu tidak diperlukan untuk melakukan itu). Bisa juga ditulis sebagaiCari file, lalu periksa nama direktori induknya:
Kedua alternatif ini akan lebih lambat daripada menggunakan
-path
seperti yang ditunjukkan Jeff. Saya meninggalkan mereka di sini sebagai contoh, karena mereka dapat disesuaikan untuk hal-hal lain.sumber