Rekursif dengan kondisi


16

Mengapa saya tidak bisa menggunakan perintah seperti ini untuk menemukan semua file pdf dalam direktori dan subdirektori? Bagaimana saya melakukannya? (Saya menggunakan bash di ubuntu)

ls -R *.pdf

EDIT

Lalu bagaimana cara menghapus semua file ini?

Jawaban:


22

Mengapa saya tidak bisa menggunakan perintah seperti ini untuk menemukan semua file pdf dalam direktori dan subdirektori?

Wildcard *.pdfdalam perintah Anda diperluas dengan bashke semua file yang cocok di direktori saat ini, sebelum dieksekusi ls.


Bagaimana saya melakukannya? (Saya menggunakan bash di ubuntu)

temukan adalah jawaban Anda.

find . -name \*.pdf

adalah daftar file pdf rekursif. -inamecocok dengan huruf besar-kecil, jadi

find . -iname \*.pdf

mencantumkan semua file .pdf, termasuk misalnya foo.PDF

Anda juga dapat menggunakan ls untuk subfolder dalam jumlah terbatas, misalnya

ls *.pdf */*.pdf

untuk menemukan semua file pdf dalam subfolder (cocok untuk bar / foo.pdf, bukan untuk bar / foo / asdf.pdf, dan bukan untuk foo.PDF).

Jika Anda ingin menghapus file yang ditemukan dengan find, Anda dapat menggunakan

find . -iname \*.pdf -delete

1
Hanya jika anda ingin output mirip dengan ls -lperintah, menunjukkan ukuran file, kepemilikan, tanggal, dsb, Anda dapat menggunakan finddengan -lspilihan, misalnyafind . -name \*.pdf -ls
RFVoltolini

2

Seperti yang orang lain katakan, temukan adalah jawabannya.

Sekarang untuk menjawab bagian lainnya.

  • Lalu bagaimana cara menghapus semua file ini?

    Temukan . -iname * .pdf -exec rm {} \;

Harus melakukannya.


2
Anda perlu mengutip glob Anda agar tidak berkembang secara prematur.
Dijeda sampai pemberitahuan lebih lanjut.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.