У мене є кілька папок з \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 і параметр-dread. Див stackoverflow.com/a/40189667/7552