Você está complicando demais isso. Não entendo o que você está tentando fazer com all.txt
. Para enumerar os arquivos em um diretório, não chame ls
: isso é mais complexo e não funciona de maneira confiável . Use um padrão de caractere curinga .
Para remover a extensão ( .txt
) no final do nome do arquivo, use o recurso de remoção de sufixos de substituição de variáveis .
Sempre coloque aspas duplas na variável substituições .
cd ParentFolder
for x in ./*.txt; do
mkdir "${x%.*}" && mv "$x" "${x%.*}"
done