我正在使用AIX。Unix cp参数列表太长
当我尝试一个文件夹中复制所有文件到另一个文件夹使用以下命令:
cp ./00012524/*.PDF ./dummy01
外壳抱怨:
ksh: /usr/bin/cp: 0403-027 The parameter list is too long.
如何处理它?我的文件夹包含8xxxx文件,我如何快速复制它们?每个文件的大小为4x kb到1xx kb。
我正在使用AIX。Unix cp参数列表太长
当我尝试一个文件夹中复制所有文件到另一个文件夹使用以下命令:
cp ./00012524/*.PDF ./dummy01
外壳抱怨:
ksh: /usr/bin/cp: 0403-027 The parameter list is too long.
如何处理它?我的文件夹包含8xxxx文件,我如何快速复制它们?每个文件的大小为4x kb到1xx kb。
使用find命令的* nix:
find ./00012524 -type f -name "*.PDF" -exec cp {} ./dummy01/ \; -print
你应该能够使用一个for循环,例如
for f in $(ls ./00012524/*.pdf)
do
cp $f ./dummy01
done
我没有办法测试这个,但它应该在理论上工作。
ls命令可能(读“几乎肯定”)会得到相同的错误。参数太长是Unix系统上C库的标准错误(man sysconf更多)。最好的应用程序是find ... | cpio -pvumd ...或使用xargs或tar c ... |焦油x等NOne这些将需要一个壳扩大glob是他的问题的原因。对于SeverFault或SuperUser而言,这比SO更适合。 – 2011-05-05 04:08:00
$ (cd 00012524; ls | grep '\.PDF$' | xargs -I{} cp {} ../dummy01/)
的-t
标志cp
在这里很有用:
find ./00012524 -name \*.PDF -print | xargs cp -t ./dummy01
最好的命令从一个目录拷贝大量文件到另一个。
find/path/to/source/-name“*”-exec cp -ruf“{}”/ path/to/destination/\;
这对我有很大的帮助。
cp命令对可以同时复制的文件有限制。
一种可能性,你可以使用多次复制它们在你的文件模式cp命令基地,如:
cp ./00012524/A*.PDF ./dummy01
cp ./00012524/B*.PDF ./dummy01
cp ./00012524/C*.PDF ./dummy01
...
cp ./00012524/*.PDF ./dummy01
您也可以复制槽找到命令:
find ./00012524 -name "*.PDF" -exec cp {} ./dummy01/ \;
我正在使用find命令“省略目录”。/ 00012524''。 – pir 2017-06-21 19:37:01
这项工作,但也许很慢? – lamwaiman1988 2011-05-05 05:17:40
在一般情况下,我还会添加一个“-type d”。与*/PDF匹配的目录应该很少,但是对于更一般的副本,它将避免首先复制父目录(或者在没有-r标志时失败)和子级复制导致的多个副本。 – FGM 2017-04-06 08:12:48
谢谢,这是一个很好的观点(编辑) – anubhava 2017-04-06 11:34:57