如何使用终端将特定扩展名的前 100 个文件复制到目标文件夹



我想使用我的终端将特定扩展名的前 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 

顺便说一下,这里没有指定的排序顺序,因为您最初的问题没有任何排序顺序。

最新更新