我有一些带有\n
字符名称的文件夹。
例如:
$ ls
''$'\n''Test'
多数民众赞成指的是一个文件夹,其名称为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
指令和-d
read选项。参见stackoverflow.com/a/40189667/7552