Ricorsivo con condizioni


16

Perché non posso usare un comando come questo per trovare tutti i file pdf in una directory e sottodirectory? Come lo faccio? (Sto usando bash in Ubuntu)

ls -R *.pdf

MODIFICARE

Come potrei quindi eliminare tutti questi file?

Risposte:


22

Perché non posso usare un comando come questo per trovare tutti i file pdf in una directory e sottodirectory?

Il carattere jolly *.pdfnel comando viene espanso da bashtutti i file corrispondenti nella directory corrente, prima di essere eseguito ls.


Come lo faccio? (Sto usando bash in Ubuntu)

find è la tua risposta.

find . -name \*.pdf

è un elenco ricorsivo di file pdf. -inameè una corrispondenza senza distinzione tra maiuscole e minuscole, quindi

find . -iname \*.pdf

elenca tutti i file .pdf, incluso ad esempio foo.PDF

Inoltre, puoi usare ls per un numero limitato di sottocartelle, ad esempio

ls *.pdf */*.pdf

per trovare tutti i file pdf nelle sottocartelle (corrisponde a bar / foo.pdf, non a bar / foo / asdf.pdf e non a foo.PDF).

Se si desidera rimuovere i file trovati con find, è possibile utilizzare

find . -iname \*.pdf -delete

1
Nel caso in cui si desideri un output simile al ls -lcomando, che mostri le dimensioni del file, la proprietà, la data, ecc., È possibile utilizzare findcon l' -lsopzione, ad es.find . -name \*.pdf -ls
RFVoltolini

2

Come altri hanno già detto, trovare è la risposta.

Ora per rispondere all'altra parte.

  • Come potrei quindi eliminare tutti questi file?

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

Dovrebbe farlo.


2
Devi citare il tuo glob per evitare che venga espanso prematuramente.
Dennis Williamson,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.