我在UNIX的一个目录下有几百个PDF。PDF的名称非常长(约60个字符)。

当我尝试使用以下命令一起删除所有PDF时:

rm -f *.pdf

我收到以下错误:

/bin/rm: cannot execute [Argument list too long]

此错误的解决方案是什么?mv和cp命令是否也会出现此错误?如果是,如何解决这些命令?


当前回答

一个更短更可靠的呢?

for i in **/*.pdf; do rm "$i"; done

其他回答

如果它们是带有空格或特殊字符的文件名,请使用:

find -name "*.pdf"  -delete

仅适用于当前目录中的文件:

find -maxdepth 1 -name '*.pdf' -delete

这句话搜索当前目录(-maxdeph 1)中扩展名为pdf(-name'*.pdf')的所有文件,然后删除。

查找具有-delete操作:

find . -maxdepth 1 -name '*.pdf' -delete

要删除前100个文件:

rm-rf'ls|头部-100'

一个更短更可靠的呢?

for i in **/*.pdf; do rm "$i"; done

您可以使用bash数组:

files=(*.pdf)
for((I=0;I<${#files[@]};I+=1000)); do
    rm -f "${files[@]:I:1000}"
done

这样,它将以每一步1000个文件的批量擦除。