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