
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.txt
y something.txt.txt
.