我想使用我的终端将特定扩展名的前 1000 个文件复制到目标文件夹,但每次我运行命令时
cp `ls -1 11944*.DAT|tail -n 1000` /ftp/BSEG_SRC
它显示错误,如/ftp/BSEG_SRC 是一个目录,参数列表太长。 你能在这里帮我吗
参数列表太长是因为当您执行此操作时:
ls -1 11944*.DAT
它试图构建一条巨大的线,例如:
foo bar [...] baz quux
当然,命令行的长度是有限制的。 好消息是它很容易修复 - 只需使用find
匹配您想要的文件,然后xargs
启动cp
,因为xargs
知道单个命令的最大长度有多长,并且会根据需要多次启动cp
:
find -name '11944*.DAT' | tail -n 1000 | xargs -I{} cp {} /ftp/BSEG_SRC
顺便说一下,这里没有指定的排序顺序,因为您最初的问题没有任何排序顺序。