У меня есть несколько папок с \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