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

5

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

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

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

Como gostaria que minha nova estrutura fosse:

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

Claro que criar diretório com os nomes de arquivos não é um problema para mim com mkdir .

    
por biobudhan 27.06.2014 / 13:59

1 resposta

7

@gniourf_gniourf tem 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. Não é não reentrante. Ele não funcionará se você tiver dois arquivos chamados something.txt e something.txt.txt .

    
por 27.06.2014 / 14:19