Unix cp参数列表太长了

时间:2011-05-05 03:31:02

标签: unix ksh aix

我正在使用AIX。

当我尝试使用以下命令将文件夹中的所有文件复制到另一个文件夹时:

cp ./00012524/*.PDF ./dummy01

shell抱怨道:

ksh: /usr/bin/cp: 0403-027 The parameter list is too long.

如何处理?我的文件夹包含8xxxx文件,如何快速复制它们?每个文件的大小为4x kb到1xx kb。

7 个答案:

答案 0 :(得分:14)

在* nix中使用find命令:

find ./00012524 -type f -name "*.PDF" -exec cp {} ./dummy01/ \; -print

答案 1 :(得分:4)

cp 命令具有可以同时复制的文件的限制。

您可以使用多次cp命令复制它们的一种可能性基于您的文件模式,例如:

cp ./00012524/A*.PDF ./dummy01
cp ./00012524/B*.PDF ./dummy01
cp ./00012524/C*.PDF ./dummy01
...
cp ./00012524/*.PDF ./dummy01

您也可以通过 find 命令复制:

find ./00012524 -name "*.PDF" -exec cp {} ./dummy01/ \;

答案 2 :(得分:1)

$ ( cd 00012524; ls | grep '\.PDF$' | xargs -I{} cp {} ../dummy01/ )

答案 3 :(得分:0)

您应该能够使用for循环,例如

for f in $(ls ./00012524/*.pdf)
do
    cp $f ./dummy01
done

我无法对此进行测试,但它应该在理论上有用。

答案 4 :(得分:0)

-t的{​​{1}}标记在这里非常有用:

cp

答案 5 :(得分:0)

将大量文件从一个目录复制到另一个目录的最佳命令。

find / path / to / source / -name“*” - exec cp -ruf“{}”/ path / to / destination / \;

这对我帮助很大。

答案 6 :(得分:0)

你可以做这样的事情并抓取目录的每一行


# you can use the -rv to check the status of the command verbose

for i in /from_dir/*; do cp -rv "$i" /to_dir/; done