Linux 如何通过单个扩展名复制所有文件
我有文件列表a.xxx a.yyy。a、 zzz 我需要按扩展名选择复制所有文件 比如说Linux 如何通过单个扩展名复制所有文件,linux,bash,xargs,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/{}.*新建文件夹 但是得到错误 cp: cannot stat 'mysql/db/ps_opc_social_customer.*' 这里的问题是,上一个命令中的*在按下ret
ls *.xxx | xargs cp a.* dir
我写这样的代码
ls mysql/db/*.MYD | xargs-n1 basename | sed's/\.MYD//g'| xargs-i cp mysql/db/{}.*新建文件夹
但是得到错误
cp: cannot stat 'mysql/db/ps_opc_social_customer.*'
这里的问题是,上一个命令中的
*
在按下return键的瞬间被shell展开,因此copy命令不会得到展开的字符串,而是文本*
字符串。
您需要一次性获得所需的所有文件,或者使用新的shell为您进行全局扩展:
ls mysql/db/*.MYD | xargs -n1 basename | sed 's/\.MYD//g' | xargs -i bash -c "cp mysql/db/{}.* new_folder"
如果要复制所有具有类似名称的文件,如扩展名
*.xxx
,则可以使用find
命令,如:find/path\u name/-type f-name”*.xxx“-exec cp{}/destination\u path/\代码>我需要通过选择一个扩展名来复制所有文件*.xxx*.yyy*.zzz*.xxx