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

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

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

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

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

Какой я хотел бы видеть свою новую структуру:

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

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

решение1

@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.

Связанный контент