Cambia * .txt in * .csv

7

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
    
posta Hans 29.08.2014 - 13:45
fonte

3 risposte

11

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
    
risposta data 29.08.2014 - 13:50
fonte
1

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'
    
risposta data 02.09.2014 - 22:14
fonte
0
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

    
risposta data 10.01.2016 - 02:45
fonte

Leggi altre domande sui tag