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

问题描述 投票:-1回答:1

我有文件列表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.*'
linux bash xargs
1个回答
1
投票

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

ls mysql/db/*.MYD | xargs -n1 basename | sed 's/\.MYD//g' | xargs -i bash -c "cp mysql/db/{}.* new_folder"
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.