如何通过单个扩展名复制所有文件

时间:2018-07-09 07:42:09

标签: linux bash xargs

我有文件列表a.xxx a.yyy。 a.zzz

我需要按扩展名选择复制所有文件 例如

ls *.xxx | xargs cp a.* dir

我写这样的代码

ls mysql/db/*.MYD | xargs -n1 basename | sed 's/\.MYD//g' | xargs -i cp mysql/db/{}.* new_folder

但出现错误

cp: cannot stat 'mysql/db/ps_opc_social_customer.*'

1 个答案:

答案 0 :(得分:1)

这里的问题是最后一个命令中的*会在您按回车键时立即被shell扩展,因此copy命令不会获得扩展的字符串,而是文字{{1} }字符串。 您需要一次性获取所有需要的文件,或者使用新的Shell为您进行全局扩展:

<file>.*