Crie um diretório usando nomes de arquivos e mova os arquivos para sua respectiva pasta

Crie um diretório usando nomes de arquivos e mova os arquivos para sua respectiva pasta

Eu tenho uma pasta com cerca de 150 arquivos de texto. Gostaria de criar pastas em nome dos 150 arquivos. Depois disso, gostaria que o arquivo de texto fosse movido para sua respectiva pasta.

Exemplos de nomes dos arquivos dentro do diretório myfolder:

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

Como eu gostaria que fosse minha nova estrutura:

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

É claro que criar diretório com os nomes dos arquivos não é um problema para mim mkdir.

Responder1

@gniourf_gniourftem a ideia certa:

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

Isso deve ser compatível com POSIX. Isso énãoreentrante. Ele vainãofuncionará se você tiver dois arquivos chamados something.txte something.txt.txt.

informação relacionada