Azioni

Shell Tricks

Da MontelLUG WIKI.

Versione del 24 gen 2005 alle 17:45 di Cesco (discussione | contributi) (Spiegazione)

Eliminazione file mp3 di tutti gli utenti :)

1. find /home -name '*.mp3' -print0 | xargs -0r rm -f 
2. find /home -iname '*.mp3' -exec rm {} \; 

Spiegazione

  1. Cerca nella cartella /home (e nelle sue sottodirectory) i file con estensione mp3 e stampali separati da carattere nullo (0x00) (quindi funziona anche con nomi con spazi). Passa il tutto a xargs che controlla che l'elenco, separato da caratteri nulli (-0), non sia vuoto (-r) e rimuove i file senza pieta' (-f), invocando una sola volta il comando rm (piu' veloce di un ciclo for).
  2. Cerca i file *.mp3 in modo case insensitive (-iname) e per ogni file trovato esegui il comando rm NOMEFILE (in quanto le parentesi graffe vengono sostituite con il nome del file trovato). Per rimuovere i file chiedendo prima conferma, basta aggiungere il parametro -i di rm, ovvero rm -i {} \;

Nota: La seconda versione esegue il comando rm per ogni file da cancellare, quindi e' piu' lenta della prima versione, ma permette di chiedere conferma per ogni file, cosa che puo' risultare utile :)

Creazione in automatico di directory :)


echo "for(c=0;c<10;++c){\"prova\";c}" | bc | xargs mkdir

Spiegazione

Il comando bc (e' nello standard posix) e' una potente calcolatrice programmabile. Se gli si butta qualcosa nello stdin lui restituisce gentilmente il risultato in stdout. Il ciclo for che gli passiamo crea semplicemente le stringhe prova1, prova2, ecc. separate da a capo.
Il mkdir crea quindi le directory.
Attenzione: cosi' com'e' non funziona con nomi che contengono spazi.