Eu tenho algumas pastas com \ncaracteres, seus nomes.
por exemplo:
$ ls
''$'\n''Test'
Isso se refere a uma pasta com o nome do teste e uma linha vazia antes do nome.
Então, quando eu executo alguns scripts como este, em seu diretório pai:
while IFS= read -r d; do
rmdir $d
done < <(find * -type d)
Isto mostra:
rmdir: failed to remove '': No such file or directory
rmdir: failed to remove 'Test': No such file or directory
Porque é executado duas vezes, uma vez ativada \ne outra ativada Test, porque o nome da pasta possui duas linhas.
Então, como posso resolver esse problema de maneira que, o script sabe que \nTesté apenas uma pasta?
find * -type d -print0 | while IFS= read -d '' file ; do rmdir $file ; donecomando tem esta saída rmdir: failed to remove 'Test': No such file or directory.
rmdir "$file"
-print0diretiva find e a-dopção de leitura. Veja stackoverflow.com/a/40189667/7552