Tujuan saya adalah untuk menemukan semua file pdf pada mesin jarak jauh, jadi saya menggunakan perintah yang bermanfaat find
. Jadi saya mengetik
cari ~ * .pdfatau
temukan ~ "* .pdf"dan saya tidak mendapatkan apa-apa. Saya melakukan hal yang sama pada mesin saya dan saya tidak mendapatkan apa-apa. Saya melakukan pencarian rutin dari menu di komputer saya dan saya menemukan beberapa file pdf. Bisakah seseorang tolong beri tahu saya apa yang saya lakukan salah?
find
jauh dari sia-sia.find
itu intuitif. Saya mungkin bisa mengatakan hal yang sama dengan nada yang lebih baik; terkadang saya bereaksi terhadap komentar negatif (konyol).Jawaban:
find
jauh dari tidak berguna. Anda tidak menggunakannya dengan benar.mencoba:
find . -type f -iname '*.pdf'
sumber
Lihatlah dokumentasi untuk findutils . The
find
perintah salah satu yang sangat kuat dan, akibatnya, memiliki antarmuka yang agak rumit. Anda dapat melakukan apa yang Anda inginkan dengan:Perintah di atas berarti "temukan di dalam. Untuk entri file jenis dengan nama huruf besar-kecil yang cocok * .pdf (dan cetak nama pasangan tersebut)". Perintah find sebenarnya dapat digunakan untuk menjalankan perintah pada file yang ditemukan (alih-alih atau sebagai tambahan untuk mencetak nama file). Namun, untuk keperluan Anda, Anda mungkin merasa lebih nyaman dengan perintah loc , yang - dengan asumsi Anda telah membangun basis data loc menggunakan updatedb - membuatnya sangat mudah untuk menemukan file. Sebagai contoh:
Anda juga akan menemukan bahwa perintah loc biasanya lebih cepat daripada perintah find karena loc menggunakan indeks nama file (database loc), sedangkan find akan menjalankan hierarki untuk setiap permintaan.
sumber
Anda hanya melewatkan predikat yang mengatakan apa yang Anda cari (mis
-name
.)Untuk menemukan di direktori home dengan nama:
Perhatikan bahwa wildcard
*
harus melarikan diri sehingga shell tidak mengartikannya sebelum ditemukan. Menggunakan'*.pdf'
dan"*.pdf"
akan memiliki efek yang sama dengan\*.pdf
.Untuk menemukan case-insensitive:
Untuk memangkas hasil ke file saja (ekspresi nama mungkin akan menangani ini untuk Anda, tetapi kalau-kalau Anda memiliki direktori bernama aneh):
Untuk memastikan menemukan, ikuti tautan simbolis (biasanya saya ingin melakukannya sendiri saat melakukan pencarian):
Untuk melakukan sesuatu dengan file yang Anda temukan: Anda dapat membuang ini ke file menggunakan stdout redirection (misalnya tack on
> filename
di akhir), atau gunakan-exec
opsi untuk menjalankan perintah (lihat halaman manual untuk detail). Yang terakhir menjalankan perintah pada setiap file sekaligus. seringkali lebih cepat membiarkanxargs
perintah meneruskan file yang ditemukan sebagai argumen ke perintah lain, sekaligus atau potongan besar sekaligus. Misalnya, untuk ad-hoc (tetapi tidak terindeks) greps melalui file header:Dan satu ekstensi terakhir, untuk membuat perintah terakhir itu berfungsi dengan baik jika Anda memiliki file & direktori dengan spasi di dalamnya:
sumber
lihat tutorial ini
Saya pikir apa yang ingin Anda lakukan adalah
sumber
iname
atribut untuk visi lorong yang lebih baikSaya biasa menggabungkan find dengan grep like
Temukan . . | grep -i ".pdf"
mungkin tidak top efisien, tetapi itu berfungsi dengan baik.
sumber
find
langsung jika Anda berharap, melalui-iregex
:find ~ -iregex '.*\.pdf'
. Masalahnya adalah, dalamfind
pola diperlakukan seperti itu selalu ada^
di depan dan$
di belakang, sehingga pola Anda perlu sedikit lebih rumit. Perhatikan juga: bahwa.
dalam pola Anda sebenarnya wildcard satu karakter, bukan periode literal.Temukan file yang perlu Anda unduh dalam x hari terakhir
akan menemukan Anda file pdf di
~
direktori home Anda dan di bawah ini dengan ekstensi.pdf
terlepas dari huruf besar dan kecil (itu saya masukiname
) dan dimodifikasi hingga 1 hari yang lalu karena saya telah menambahkanmtime -1
; jika Anda memasukkan -60 dalam waktu mtime, itu akan menjadi 60 hari terakhir.sumber
Untuk menjalankan pencarian dalam file "ditemukan" ada konstruksi ini:
Perintah exec harus diakhiri dengan escaped ";" dan -H diperlukan untuk grep untuk mencetak path file di samping baris dalam file di mana "string" berada.
sumber