Come posso rinominare tutti * .txt in una directory in file * .csv nel terminale (Mavericks). Ho provato a seguire all'interno della directory:
mv *.txt *.csv
Devi eseguire il ciclo su tutti i file
for f in *.txt; do
mv "$f" "${f%.txt}.csv"
done
Se hai file con nomi che iniziano con .
, potresti dover eseguire
for f in *.txt .*.txt; do
[[ -f "$f" ]] && mv "$f" "${f%.txt}.csv"
done
Anche questo funziona bene:
# change to the Zsh
zsh
# load the built-in zmv function
autoload -U zmv
# rename the files
zmv '(*).txt' '$1.csv'
ls *.txt |awk '{print "mv "$1" " substr($1,1,(index($1,".txt")))"csv"}' |sh
Spiegazione dei comandi:
ls *.txt
elenca i file che terminano con txt
| awk '{print "mv "$1" " substr($1,1,(index($1,".txt")))"csv"}
stampa il comando che consente di rinominare i file precedenti elencati con txt in csv
| sh
esegue il comando precedentemente stampato, quindi rinomina efficacemente i file
Nota: se vuoi elencare tutti i file compresi quelli nascosti (quelli che iniziano con .
) usa ls -a *.txt
invece