我在UNIX的一个目录下有几百个PDF。PDF的名称非常长(约60个字符)。
当我尝试使用以下命令一起删除所有PDF时:
rm -f *.pdf
我收到以下错误:
/bin/rm: cannot execute [Argument list too long]
此错误的解决方案是什么?mv和cp命令是否也会出现此错误?如果是,如何解决这些命令?
我在UNIX的一个目录下有几百个PDF。PDF的名称非常长(约60个字符)。
当我尝试使用以下命令一起删除所有PDF时:
rm -f *.pdf
我收到以下错误:
/bin/rm: cannot execute [Argument list too long]
此错误的解决方案是什么?mv和cp命令是否也会出现此错误?如果是,如何解决这些命令?
当前回答
如果它们是带有空格或特殊字符的文件名,请使用:
find -name "*.pdf" -delete
仅适用于当前目录中的文件:
find -maxdepth 1 -name '*.pdf' -delete
这句话搜索当前目录(-maxdeph 1)中扩展名为pdf(-name'*.pdf')的所有文件,然后删除。
其他回答
rm命令对可以同时删除的文件有限制。
一种可能性是,您可以根据文件模式多次使用rm命令删除它们,例如:
rm -f A*.pdf
rm -f B*.pdf
rm -f C*.pdf
...
rm -f *.pdf
也可以通过find命令删除它们:
find . -name "*.pdf" -exec rm {} \;
我只知道一个办法。这个想法是将你拥有的pdf文件列表导出到一个文件中。然后将该文件分成几个部分。然后删除每个部分中列出的pdf文件。
ls | grep .pdf > list.txt
wc -l list.txt
wc-l是计算list.txt包含的行数。当你知道它有多长时,你可以决定把它分成两半、四等分或其他什么。使用split-l命令例如,将其分成600行。
split -l 600 list.txt
这将创建一个名为xaa、xab、xac等的文件,具体取决于如何拆分它。现在,要将这些文件中的每个列表“导入”到命令rm中,请使用以下命令:
rm $(<xaa)
rm $(<xab)
rm $(<xac)
对不起,我的英语不好。
要删除前100个文件:
rm-rf'ls|头部-100'
另一个答案是强制xargs成批处理命令。例如,要一次删除文件100,请cd到目录中并运行以下命令:
echo*.pdf | xargs-n 100 rm
如果要同时删除文件和目录,可以使用以下命令:
echo /path/* | xargs rm -rf