我在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命令是否也会出现此错误?如果是,如何解决这些命令?
当前回答
参数列表太长
作为cp、mv和rm的问题标题,但答案主要代表rm。
Un*x命令
仔细阅读命令的手册页!
对于cp和mv,有一个-t开关,用于目标:
find . -type f -name '*.pdf' -exec cp -ait "/path to target" {} +
and
find . -type f -name '*.pdf' -exec mv -t "/path to target" {} +
脚本方式
bash脚本中使用了一个整体解决方案:
#!/bin/bash
folder=( "/path to folder" "/path to anther folder" )
if [ "$1" != "--run" ] ;then
exec find "${folder[@]}" -type f -name '*.pdf' -exec $0 --run {} +
exit 0;
fi
shift
for file ;do
printf "Doing something with '%s'.\n" "$file"
done
其他回答
对于这个问题,下面的选项似乎很简单。我从其他线程获得了这些信息,但它对我有所帮助。
for file in /usr/op/data/Software/temp/application/openpages-storage/*; do
cp "$file" /opt/sw/op-storage/
done
只需运行上面的一个命令,它就会完成任务。
或者您可以尝试:
find . -name '*.pdf' -exec rm -f {} \;
我也遇到了同样的问题,因为一个文件夹中的临时图像与日俱增,这个命令帮助我清除了这个文件夹
find . -name "*.png" -mtime +50 -exec rm {} \;
与其他命令的不同之处在于mtime参数,该参数将只接受早于X天的文件(在示例中为50天)
多次使用这种方法,减少每天执行的次数,我能够删除所有不必要的文件
当一个应用程序创建了数百万无用的日志文件,填满了所有inode时,我也遇到过类似的问题。我求助于“定位”,将所有“定位”的文件放入文本文件,然后逐一删除。花了一段时间,但完成了任务!
对于没有时间的人。在终端上运行以下命令。
ulimit -S -s unlimited
然后执行cp/mv/rm操作。