¿Hay alguna manera de cambiar el nombre de todos los archivos en un directorio a minúsculas | mayúsculas?
Estoy buscando un comando oneliner .
Me encantó TotalCommander's alt+f7, ahora necesito esa funcionalidad en la Terminal
¿Hay alguna manera de cambiar el nombre de todos los archivos en un directorio a minúsculas | mayúsculas?
Estoy buscando un comando oneliner .
Me encantó TotalCommander's alt+f7, ahora necesito esa funcionalidad en la Terminal
Respuestas:
Para cada archivo a_fileen el directorio actual, cambie el nombre a_filea minúsculas.
for a_file in *;do mv -v "$a_file" `echo "$a_file" | tr [:upper:] [:lower:]` ;done;
Para mayúsculas, invierta los argumentos para [:lower:] [:upper:]
trenlace de referencia de comando
Actualizar
Para aún más control *puede ser reemplazado con ls.
Por ejemplo, en un directorio que contiene 1.txt, 2.txt, 3.txt, 1.jpg, 2.jpg y 3.jpg para filtrar solo archivos * .jpg, lsse pueden usar:
for a_file in $(ls *.jpg);do mv -v $a_file `echo $a_file | tr [:upper:] [:lower:]` ;done;
El código anterior asignará a la a_filevariable todos los archivos con extensión .jpg.
-vOpción de actualización agregada al mvcomando según sds sugerido.
Hay una utilidad más elegante y general llamada prename.
Escrito por Larry Wall, viene con perllo más probable es que ya esté disponible en su sistema como /usr/bin/prename(si tiene alternativas de configuración también puede estar disponible como /usr/bin/renameenlace simbólico a través de / etc / alternativas a prename)
Al usarlo, puede cambiar el nombre de varios archivos en un comando al proporcionar cualquier expresión perl (incluidas, entre otras, la sustitución s///o la transcripción de caracteres tr///):
Ejemplos:
# Lowercase all *.JPG filenames:
prename tr/A-Z/a-z/ *.JPG
# Change any 'No' in a filename to a 'Yes':
prename s/No/Yes/g *No*
# increment first sequence of digits in a filename by 3:
prename 's/([0-9]+)/$1+3/e' *[0-9]*
# If a file contains 'aaa', append '.bak' to its name
prename 'if (/aaa/) {$_ .= ".bak"}' *
Y así.
Otra cosa buena acerca de prename es que lo protege, en el caso de cambiar el nombre de un archivo a un nombre de archivo existente.
man prename para más detalles.
findfind . -name * -type f -exec rename 'y/A-Z/a-z/' '{}' \;
find-nameponer tu patrón.-maxdepth 0: Solo el directorio actual.rename-n, -nono: Sin acción: imprime los nombres de los archivos a renombrar, pero no cambies el nombre.y/source/dest/: Transcribe los caracteres en el espacio del patrón que aparecen en la fuente al carácter correspondiente en el destino.
mvpara que vea lo que se está haciendo; es posible que no desee pasar "-f" porque esto puede