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