without script filename extension ejecutar create bash file shell command-line file-extension

bash - script - recursivamente agregar extensión de archivo a todos los archivos



ejecutar shell script en windows (6)

Tengo algunos directorios y subdirectorios que contienen archivos sin extensión de archivo. Quiero agregar .jpg a todos los archivos contenidos en estos directorios. He visto scripts bash para cambiar la extensión del archivo, pero no solo para agregar uno. También necesita ser recursivo, ¿alguien puede ayudar, por favor?


Comando alternativo sin un bucle explícito ( man find ):

find . -type f -exec mv ''{}'' ''{}''.jpg /;

Explicación: esto recursivamente encuentra todos los archivos ( -type f ) comenzando desde el directorio actual ( . ) Y aplica el comando move ( mv ) a cada uno de ellos. Tenga en cuenta también las comillas {} , de modo que los nombres de archivos con espacios (e incluso líneas nuevas ...) se manejen de manera adecuada.


Esto es un poco tarde, pero pensé que agregaría que una mejor solución (aunque quizás menos legible) que las que hasta ahora podría ser:

find /path -type f -not -name "*.*" -print0 | xargs -0 rename ''s/(.)$/$1.jpg/''

Usando el find | xargs find | xargs patrón find | xargs generalmente resulta en una ejecución más eficiente, ya que no es necesario bifurcar un nuevo proceso para cada archivo.

Tenga en cuenta que esto requiere la versión del cambio de nombre que se encuentra en las distribuciones con sabor a Debian (también conocido como prename), en lugar del cambio de nombre tradicional. Sin embargo, es solo una pequeña secuencia de perl, por lo que sería bastante fácil usar el comando anterior en cualquier sistema.


Me gusta esto,

for f in $(find . -type f); do mv $f ${f}.jpg; done

No espero que tengas nombres de archivos separados por espacios,
Si lo hace, los nombres deberán procesarse un poco.

Si desea ejecutar el comando desde otro directorio,
puedes reemplazar el find . con el find /target/directory .


Para cambiar el nombre de todos los archivos sin extensión en Windows básico, puede hacer ren * *.jpg Como el archivo no tiene extensión, solo use el *, o si desea cambiar png a jpg use ren *.png *.jpg


esto encontrará archivos sin extensión y agregará su .jpg

find /path -type f -not -name "*.*" -exec mv "{}" "{}".jpg /;


rename

no estoy seguro de que pueda cambiar el nombre de los archivos sin extensiones (estoy en Windows 7 en este momento)