如何使用终端

时间:2017-07-10 12:01:02

标签: shell

我想使用我的终端将特定扩展名的前1000个文件复制到目标文件夹,但每次我运行命令

cp `ls -1 11944*.DAT|tail -n 1000` /ftp/BSEG_SRC 

它显示错误,如/ ftp / BSEG_SRC是一个目录,参数列表太长。 你能帮助我吗

1 个答案:

答案 0 :(得分:0)

参数列表太长,因为当你这样做时:

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 

顺便说一下,这里没有指定的排序顺序,因为你原来的问题没有。