如何通过单个扩展名复制所有文件
How to copy all files by single extension
我有文件列表 a.xxx a.yyy。 a.zzz
我需要通过扩展名 select 复制所有文件
例如
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 时,最后一个命令中的 *
被 shell 扩展了,所以复制命令没有得到一个扩展字符串,但文字 <file>.*
字符串。
您需要一次性获取所有需要的文件,或者使用新的 shell 为您进行 glob 扩展:
ls mysql/db/*.MYD | xargs -n1 basename | sed 's/\.MYD//g' | xargs -i bash -c "cp mysql/db/{}.* new_folder"
我有文件列表 a.xxx a.yyy。 a.zzz
我需要通过扩展名 select 复制所有文件 例如
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 时,最后一个命令中的 *
被 shell 扩展了,所以复制命令没有得到一个扩展字符串,但文字 <file>.*
字符串。
您需要一次性获取所有需要的文件,或者使用新的 shell 为您进行 glob 扩展:
ls mysql/db/*.MYD | xargs -n1 basename | sed 's/\.MYD//g' | xargs -i bash -c "cp mysql/db/{}.* new_folder"