Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何通过单个扩展名复制所有文件_Linux_Bash_Xargs - Fatal编程技术网

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

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

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

这里的问题是,上一个命令中的
*
在按下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