如果我想将所有*.so
文件从复制src
到dst
我会这样做:
cp src/*.so dst
但是,我想*.so
从 src 复制所有文件,然后它的子目录进入dst
。有什么线索吗?
答案1
尝试:
find src/ -type f | grep -i so$ | xargs -i cp {} dst
答案2
如果你使用 Bash,你可以打开globstar
shell 选项递归匹配文件和目录:
shopt -s globstar
cp src/**/*.so dst
如果您需要查找名称以 开头的文件.
,和/或名称以 开头的目录中的文件.
,请dotglob
同时设置选项(例如,使用shopt -s dotglob
)。您可以在一个命令中同时设置它们:
shopt -s globstar dotglob
答案3
我尝试了 Mike 建议的命令:
find src/ -type f | grep -i so$ | xargs -i cp {} dst
但最终将所有文件转储到目录中,dst
并且其相对路径丢失。
为了保留相对路径,需要将命令修改为:
find src/ -type f | grep -i so$ | xargs -i cp {} dst/{}
答案4
可以使用 find 来代替 grep-姓名:
find src/ -type f -name "*.so" | xargs -i cp {} dst/{}