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

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

rm -f *.pdf

我收到以下错误:

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

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


当前回答

对于这个问题,下面的选项似乎很简单。我从其他线程获得了这些信息,但它对我有所帮助。

for file in /usr/op/data/Software/temp/application/openpages-storage/*; do
    cp "$file" /opt/sw/op-storage/
done

只需运行上面的一个命令,它就会完成任务。

其他回答

我在将源目录复制到目标目录时遇到了同样的问题

源目录包含文件约3 lakcs

我使用cp和选项-r,这对我很有用

cp-r abc/def/

它会将所有文件从abc复制到def,而不会发出参数列表过长的警告

如果要同时删除文件和目录,可以使用以下命令:

echo /path/* | xargs rm -rf

使用GNU并行(sudo apt install parallel)非常简单

它以多线程方式运行命令,其中“{}”是传递的参数

E.g.

ls/tmp/myfiles*|并行“rm{}”

或者您可以尝试:

find . -name '*.pdf' -exec rm -f {} \;

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

find -name "*.pdf"  -delete

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

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

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