TXT 文件中的 xarg 和换行符 - " xargs -d '/n' "失败



我在txt文件中需要删除大约10k项目的列表。

我从这里开始:UNIX:如何删除文件中列出的文件

但遇到了

rm: 721_0199_01.movr: No such file or directory

看起来我需要忽略/不通过'/r'

所以,我去这里:xargs and find,rm抱怨文件名中的 n(newline)

看起来像:

xargs -d '/r' rm < my-big-list.txt 

但它抱怨:

xargs: illegal option -- d
usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr]
         [-L number] [-n number [-x]] [-P maxprocs] [-s size]
         [utility [argument ...]]

我在任何人的页面中都找不到-d,所以我不确定从这里去哪里。

我走了吗,我想念读书吗?

谢谢!

好吧 - 再次,谢谢大家,我确实摆脱了/r,但是我在这些文件名中有大量的空格,这使我很高兴:

如何使Xargs处理包含空格的文件名?

在 而不是空间和新线。预计将在 与find(1)中的-print0函数的音乐会。

和:

linux:将命令的输出重定向到" find&quot"

但这并没有真正的帮助...

rad vans skype testcccccccc995141.vid

rad vans skype testcccccc995142.vid

rad vans skype testccccc995143.aiff

rad vans skype testcccccccc995144.aiff

rad vans skype testcccccc995145.qtc

rad vans skype testccccccccc998bf.mov

rad vans skype testcccc998bf1.vid

rad vans skype testccccccc998bf2.vid

rad vans skype testccccccccccccccccccc98bf3.aiff

rad vans skype testccccccccccccccccccccc98bf4.aiff

rad vans skype testccccccccccccccccccccccccccccccccccccccccccccccccccccccc.qtc

是我要删除的一个很好的例子 - 我怀疑此列表大约是目录中内容的60%...

是否有一些技巧可以找到?

谢谢!

当您的 xargs不支持选项 d(对于分隔符)时,例如在macOS上,您有时可以使用选项 0

< my-big-list.txt tr "n" "" | xargs -0 rm

此解决方案比while ... do ... done

快速

这只是一个猜测,但看起来您的原始文件是在Windows操作系统下制作的。

在Windows下,要表示新行,您可以使用 r n ,而在Uni*下,通常仅是 n 。这将解释为什么Xargs不删除此字符。

我建议您通过程序运行文件:dos2unix,它应该解决您的问题。

您可以尝试一些不同的方式:

remove.sh

#!/bin/bash
while read line
do 
    rm $line
done
remove.sh < my-big-list.txt

XARGS方法可以达到bash限制。echo $ arg_max应该大于您的文件。您可以通过导出arg_max = new_value

增加它

最新更新