follow me on Twitter

    Live in the Shell #1: ripetere un comando su una lista di file

    Spesso mi è capitato durante la normale manutenzione della mia home, delle directory di building o durante interventi sistemistici vari, di dover ripetere un task su una lista di file. Di solito utilizzo spontaneamente l'approccio da coder:
    
    rpl@ubik:~$  LIST=`find -iname "*~"`
    rpl@ubik:~$  for i in $LIST; echo $i; done
    [...]
    
    
    Il che non è sbagliato... funziona... Ma il bello del lavorare in team è lo scambio di abitudini e conoscenze continuo e naturale, e oggi Domenico M. mi ha fatto notare che c'e' un modo più compatto e sistemistico per svolgere lo stessa operazione:
    
    rpl@ubik:~$  find -iname "*~" -exec echo '{}' \;
    
    
    Ma il bello è che ce ne sarebbe ancora un'altra (e chissa quante altre):
    
    rpl@ubik:~$ find -iname "*~" | xargs echo
    
    
    e allora quale usare? beh... de gustibus. Il primo metodo è un for vero e proprio e si puo' utilizzare in generale con ogni stringa che contenga un elenco di elementi separati da spazi, gli altri sono sicuramente più manegevoli quando la lista andrebbe comunque generata con un find ;-)

    0 commenti:

    View Luca Greco"s profile on LinkedIn

    Rpl

    La mia foto
    Lecce, Italy
    Fulltime Coder and *nix BOFH