18 votos

Agregar extensión de archivo para los archivos con bash

¿Cuál es la buena manera de agregar la extensión de archivo ".jpg" para la extensión de menos de archivos con bash?

Gracias,

15voto

Seth Robertson Puntos 13276
for f in *.jpg; do mv "$f" "${f%.jpg}"; done
for f in *; do mv "$f" "$f.jpg"; done

13voto

jm666 Puntos 17312

De otra manera - sin bucles

find . -type f -not -name "*.*" -print0 |\
xargs -0 file |\
grep  'JPEG image data' |\
sed 's/:.*//' |\
xargs -I % echo mv % %.jpg

Desglose:

  • encontrar todos los archivos sin extensión
  • compruebe el tipo de archivo
  • filtrar sólo los archivos JPG
  • eliminar un tipo de archivo info
  • xargs ejecutar el "mv" para cada archivo

el comando de arriba es para el funcionamiento en seco, después de esto usted debe quitar el "echo" antes de mv

12voto

Kim Stebel Puntos 22873

Usted puede utilizar cambiar el nombre de:

rename 's/(.*)/$1.jpg/' *

2voto

Ryan Li Puntos 2287
find . | while read FILE; do if [ ! -n `file --mime-type "$FILE" | grep 'image/jpeg'` ]; then mv "$FILE" "$FILE".jpg; fi; done;

-1voto

Ryan Li

La sintaxis correcta para la adición de una extensión de archivo a varios archivos dentro de un directorio que no tienen una extensión de archivo es

find . | while read FILE; do if [[ -n `file --mime-type "$FILE" | grep 'message/rfc822'` ]]; then  mv "$FILE" "$FILE".eml; fi; done;

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: