У меня есть несколько папок с \nхарактером это их имена.
например:
$ ls
''$'\n''Test'
Это относится к папке с именем теста и пустой строкой перед ее именем.
Поэтому, когда я запускаю несколько таких сценариев, в родительском каталоге:
while IFS= read -r d; do
rmdir $d
done < <(find * -type d)
Это показывает:
rmdir: failed to remove '': No such file or directory
rmdir: failed to remove 'Test': No such file or directory
Потому что он запускается дважды, один раз \nи другой включенный Test, потому что имя папки состоит из двух строк.
Так как я могу решить эту проблему так, чтобы скрипт знал \nTestтолько одну папку?
find * -type d -print0 | while IFS= read -d '' file ; do rmdir $file ; doneкоманды есть этот вывод rmdir: failed to remove 'Test': No such file or directory.
rmdir "$file"
-print0директиву find и-dопцию read. См stackoverflow.com/a/40189667/7552