我已经在使用以下命令从特定日期复制文件。
以前我使用过这个命令,它运行良好,但现在它显示错误:
-bash: /bin/cp: Argument list too long
使用的好评:
cd /share/new/
cp `find . -type f -newermt '16 july 2018'` /share/test
我需要从 7 月 20 日到今天复制文件夹“新”中的所有文件。我怎样才能做到这一点?
我已经在使用以下命令从特定日期复制文件。
以前我使用过这个命令,它运行良好,但现在它显示错误:
-bash: /bin/cp: Argument list too long
使用的好评:
cd /share/new/
cp `find . -type f -newermt '16 july 2018'` /share/test
我需要从 7 月 20 日到今天复制文件夹“新”中的所有文件。我怎样才能做到这一点?
不要
cp
直接与find
.它可能会在一个步骤中传递太多文件(这就是您收到错误的原因
Argument list too long
)。使用 的
-exec
参数find
,它执行给定的命令,将每个匹配的文件传递给cp
,一次一个:使用
find -exec
:利用 的
-exec
动作find
和-t
选项cp
; 如果您不想意外覆盖同名文件,我还建议使用-i
or选项:-n
其他当前答案
cp
为每个匹配文件生成一个子进程,而此答案仅根据总程序参数长度限制(见下文)生成尽可能多的子进程,一旦您达到数千个匹配项,这将产生很大的不同是你的情况。从
find(1)
手册:从
cp(1)
手册:你应该试试这个语法: