0 votos

¿Cómo puedo usar la terminal para poner archivos en un directorio en carpetas, agrupándolos según el nombre?

Tengo un directorio grande con archivos pdf en él (varios miles). Los archivos están todos nombrados con un número de 5 dígitos al principio como este:

Directorio
|___00001 archivo 1.pdf
|___20000 archivo 1.pdf
|___20000 archivo 2.pdf
|___20001 archivo 1.pdf
|

Necesito crear una carpeta para cada número de trabajo y poner los archivos con ese número en esa carpeta así:

Directorio
|____00001
| |____00001 archivo 1.pdf
|____20000
| |____20000 archivo 1.pdf
| |____20000 archivo 2.pdf
|____20001
| |____20001 archivo 1.pdf
| 

Encontré este comando:

for FILE in *; do FOLDER=$(echo $FILE | sed 's/\.[A-Za-z0-9]*$//'); mkdir "$FOLDER"; mv "$FILE" "$FOLDER" ; done

pero simplemente crea un archivo separado para cada carpeta. Me gustaría hacer esto desde la ventana de Terminal en mi Mac si es posible.

1voto

Barmar Puntos 128

Su comando sed simplemente está eliminando la parte del nombre de archivo que comienza con .. Por lo tanto, está asignando FOLDER al nombre de archivo sin .pdf. La expresión regular debería coincidir con todo lo que comienza desde un espacio, no ..

for FILE in *; do 
    FOLDER=$(echo "$FILE" | sed 's/ .*$//')
    mkdir -p "$FOLDER"
    mv "$FILE" "$FOLDER" 
done

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X