Mueva archivos a carpetas individuales, usando el nombre de archivo como convención de nomenclatura de carpeta para carpeta, usando Terminal

He estado buscando una respuesta en la web durante unas horas y no puedo encontrar lo que estoy buscando. Lo que quiero hacer es mover cada archivo en un directorio a una nueva carpeta usando el nombre del archivo, excluyendo la extensión.

/Movies/Filname.avi ---> /Movies/Filename/Filename.avi

Sé cómo hacer cada archivo individual, pero ¿puedo hacerlo solo para toda la carpeta usando un comando o un script?

¿Puede publicar su guión como respuesta en lugar de agregarlo a la pregunta? Haría que sea más fácil para otros usuarios entender lo que está pasando.

Respuestas (1)

Esto debería funcionar.

#!/bin/bash
shopt -s nullglob    #avoid problems in directory with no files
ext=avi              #the file extension to search for
for f in *.$ext; do
    d="${f##/}"      #gives us just the filename
    d="${d%.$ext}"   #strips the file extension
    mkdir "$d"       #makes the directory
    mv "$f" "$d/$f"  #moves the file
done
Al final decidí escribir el mío, no está mal solo que tengo varias extensiones. Publicaré mi guión en unas horas, cuando me lo permitan.