Создайте каталог, используя имена файлов, и переместите файлы в соответствующую папку

У меня есть папка с примерно 150 текстовыми файлами. Я хотел бы создать папки на имя 150 файлов. После этого я хочу, чтобы текстовый файл был перемещен в соответствующую папку.

Примеры имен файлов внутри каталога myfolder:

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

Как бы мне хотелось, чтобы моя новая структура была:

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

Конечно, создание каталога с именами файлов для меня не является проблемой с mkdir .

@gniourf_gniourf имеет правильную идею:

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

Это должно быть совместимо с POSIX. Это не повторный вход. Это не сработает, если у вас есть два файла с именем something.txt и something.txt.txt .