我正在使用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