我有一个基于Linux的服务器,我使用它来做一些文件管理,并为我的其他多个服务器提供服务。
基本上这个服务器(比如server1)从其他服务器获取输入为.mp3文件,并转换为其他文件格式(.wav,.txt和.xml),并将请求的响应发送给其他服务器。
在一段时间内,我的这个文件夹(Say / Somepath / MyInputFolder)现在有了我要删除的GB数据。
我尝试了rm -r *
命令,但它说:
Argument list too long
我还尝试rm -r *.mp3
和rm -r *.txt
分别删除这些文件,但它也会出现同样的错误。
我尝试了上述SO问题的解决方案并将错误视为警告。
find . -name "*.txt" -maxdepth 1 -print0 | xargs -0 rm
find: warning: you have specified the -maxdepth option after a non-option argument -name, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
我怎样才能实现这个目标?
答案 0 :(得分:3)
正如您对链接的答案的评论中所述,您需要将-maxdepth直接放在路径之后。像这样:
find . -maxdepth 1 -name "*.txt" -print0 | xargs -0 rm
答案 1 :(得分:3)
ls | tail -10000 | xargs rm -rf
多次执行。
答案 2 :(得分:2)
我也有同样的例外。我有超过1个文件。 这是您需要重复运行的命令
$ rm -f ls|tail -10000
执行了10次。
答案 3 :(得分:2)
已经回答了这个问题,但我想补充一下这个问题。
find
有自己的-delete
选项,可以删除找到的文件。所以你可以这样做:
find -maxdepth 1 -name "*.txt" -delete
如果您有兴趣阅读有关此问题的更多信息,我建议this link。
答案 4 :(得分:0)
你可以这样试试:
for m in * do; rm "$m"; done