Cree un directorio usando nombres de archivos y mueva los archivos a su carpeta respectiva

Cree un directorio usando nombres de archivos y mueva los archivos a su carpeta respectiva

Tengo una carpeta con alrededor de 150 archivos de texto. Me gustaría crear carpetas con el nombre de los 150 archivos. Después de eso, me gustaría que el archivo de texto se mueva a su carpeta respectiva.

Nombres de ejemplo de los archivos dentro del directorio micarpeta:

~/myfolder/
       |______ ajhaslf.txt
       |______ oiueed.txt
       |______ dsflije.txt

Cómo me gustaría que fuera mi nueva estructura:

~/myfolder/
       |______ ajhaslf
                   |____ajhaslf.txt
       |______ oiueed
                   |____oiueed.txt
       |______ dsflije
                   |____dsflije.txt

Por supuesto, crear un directorio con los nombres de archivos no es un problema para mí mkdir.

Respuesta1

@gniourf_gniourftiene la idea correcta:

set -o errexit -o nounset
cd ~/myfolder
for file in *.txt
do
    dir="${file%.txt}"
    mkdir -- "$dir"
    mv -- "$file" "$dir"
done

Esto debería ser compatible con POSIX. Esnoreentrante. Va anofunciona si tienes dos archivos llamados something.txty something.txt.txt.

información relacionada