我有一个文本文件中的目录列表,每个目录都需要删除。我如何将该列表读入命令 (rm -r
或rmdir
)?
答案1
“更正确”的解决方案如下:
xargs -I{} rm -r {} < files
这将调用rm -r
,其中{}
替换为文件名。
为什么?管道文件与空格xargs
会导致错误参数。假设您的文件列表如下所示:
/path/to/file 1
/path/to/file_2
然后xargs rm -r < list.txt
会尝试删除/path/to/file
、1
和/path/to/file_2
。这绝对不是您想要的。在从 UNIX / Linux 命令进行管道传输时,请务必注意路径中的空格。
答案2
假设你有路径带有空格在文件 list.txt 中 - 每行一个路径。然后,以下调用 xargs 的方式将保留空格:
cat list.txt | xargs -d \\n rm -r