Cambie * .txt a * .csv

7

¿Cómo puedo cambiar el nombre de todos * .txt en un directorio a archivos * .csv en el terminal (Mavericks)? Intenté seguir dentro del directorio:

mv *.txt *.csv
    
pregunta Hans 29.08.2014 - 13:45

3 respuestas

11

Debes recorrer todos los archivos

for f in *.txt; do
    mv "$f" "${f%.txt}.csv"
done

Si tiene archivos con nombres que comiencen con . , es posible que tenga que ejecutar

for f in *.txt .*.txt; do
    [[ -f "$f" ]] && mv "$f" "${f%.txt}.csv"
done
    
respondido por el nohillside 29.08.2014 - 13:50
1

Esto también funciona bien:

# change to the Zsh
zsh

# load the built-in zmv function
autoload -U zmv

# rename the files
zmv '(*).txt' '$1.csv'
    
respondido por el Chauncey Garrett 02.09.2014 - 22:14
0
ls *.txt |awk '{print "mv "$1" " substr($1,1,(index($1,".txt")))"csv"}' |sh

Explicación del comando:

ls *.txt lista los archivos que terminan con txt

| awk '{print "mv "$1" " substr($1,1,(index($1,".txt")))"csv"} imprime el comando que permite cambiar el nombre de los archivos anteriores listados con txt a csv

| sh ejecuta el comando previamente impreso, por lo tanto, cambia el nombre de los archivos

Nota: si desea enumerar todos los archivos, incluidos los archivos ocultos (aquellos que comienzan con . ), use ls -a *.txt en su lugar

    
respondido por el kiran 10.01.2016 - 02:45

Lea otras preguntas en las etiquetas