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



我有文件列表 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.*'

这里的问题是,当您按 return 键时,最后一个命令中的*会在您按下 return 的瞬间被 shell 展开,因此 copy 命令不会获得扩展的字符串,而是获得文字<file>.*字符串。 您需要一次性获取所需的所有文件,或者使用新的 shell 为您进行全局扩展:

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

最新更新