Dados los siguientes archivos:
english_api
english_overview
style.css
Quiero tener:
english_api.html
english_overview.html
style.css
En otras palabras, cómo agregar un texto a todos los archivos que no contienen un punto ( .
) dentro de un directorio usando terminal.
Obviamente hay muchos archivos en esa carpeta; Acabo de escribir 3 como ejemplo.
Si tuviera que, digamos, reemplace .css
con .html
en esa carpeta, yo utilizo:
rename .css .html *.css
Pero realmente no puedo pensar en una forma de hacer coincidir los archivos que no contienen algo. ¿También cómo agregar (vs reemplazar) usando el rename
comando?
fuente
for file in path/to/files/!(*.*); do echo mv "$file" "$file.html"; done
comando cambia el nombre de los directorios también.Mi preferido en casos como este es
mmv
. No está instalado por defecto en Ubuntu, pero puede instalarlo usando elsudo apt-get install mmv
comando.En su caso, debe usarlo dos veces:
Cambie el nombre de todos los archivos del directorio actual agregando
.html
al final de cada nombre de archivo:Cambie el nombre nuevamente (atrás) de todos los archivos que previamente tenían en sus nombres uno o más
.
(puntos):O, en una línea:
-v
La opción no es obligatoria. Lo uso solo para una salida detallada porque sin élmmv
realiza acciones en silencio.Ver
man mmv
para más información.fuente
Con el comando Perl rename (
prename
), puede agregar una condición de que el nombre del archivo debe contener un punto. Si el fragmento de Perl no cambia el nombre de un archivo, ese archivo no se modifica. Aquí hay algunas maneras de escribir esto:fuente
Las respuestas son perfectas, también te doy otro comando que hace este trabajo:
Alguna explicación:
NOTA :
Intento su escenario y el comando hace el trabajo.
fuente
ls
.awk
ysh
, prueba algo comoprintf "'%s'\n" -- !(*.*) | awk '{print "mv -- "$0" "$0".html"}' | sh
. Eso todavía se romperá en los nombres de archivo con nuevas líneas, pero al menos puede tratar con espacios. El--
es necesaria para los casos en los que tienen nombres de archivo que comienzan con-
.