Come tocco in modo ricorsivo i file corrispondenti a un modello


8

Nella mia directory ~ / docs, voglio "toccare" tutti i file che terminano con .txt

Come posso fare questo?

Risposte:


20

Con find:

find ~/docs -name "*.txt" -exec touch {} \;
  • Si cerca in ~/docs
  • L' nameopzione corrisponderà a tutti i txtfile -  execeseguirà il comando touchsul nome del file, che è sostituito in{}
  • \;termina il comando e touchverrà chiamato una volta per ogni file trovato

Nota:

  • Una leggera variazione, \+alla fine costruisce un singolo comando da eseguire touchsu tutti questi file contemporaneamente. Questo non è possibile con tutti i comandi, ma funziona touche ti salva alcune chiamate se hai molti file interessati.

4
{} \+sarebbe meglio qui ... in touchgrado di gestire molti nomi di file sulla sua riga di comando, quindi ad esempio, con 10 mila file e {} \; 10 mila chiamate verranno fatte a touch... L'utilizzo {} \+chiamerà touchsolo una volta (a seconda della memoria disponibile) ... Qui è un estratto del ritrovamento dell'uomo-page: -exec command {} + ... The command line is built in much the same way that xargs builds its command lines. Ci sono più dettagli nella man finddocumentazione.
Peter

@ Peter.O Vero, solo una mia abitudine di usare l'altra sintassi.
slhck,

@slhck: e molto più lento con un sovraccarico maggiore.
Ciao71,
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.