首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找具有相对路径的-exec mv

查找具有相对路径的-exec mv
EN

Stack Overflow用户
提问于 2021-04-09 12:44:28
回答 1查看 90关注 0票数 0

我有:

代码语言:javascript
复制
~/par1/
~/par2/*/*

期望的结果:

~/par2/*/*.gz -> ~/par1/pmc_{}.gz

例如~/par2/par3/name.gz -> ~/par1/pmc_name.gz

例如,将~/par2/中的文件展平为~/par1/,并在文件名前加上一些前缀

注意:这是针对数百万个文件的,因此它必须是find

已尝试:

代码语言:javascript
复制
cd par2/
find . -name '*.gz' -maxdepth 2 -exec mv {} ../par1/pmc_{} \;

得到:

代码语言:javascript
复制
mv: rename ./par2/par3/file.gz to ../par1/pmc_./par2/par3/file.gz: No such file or directory

问题:

{}是文件路径,而不是文件名。

想法:

以某种方式让我的第二个mv参数使用basename

mv -t看起来很有前途,但我用的是zsh。

EN

回答 1

Stack Overflow用户

发布于 2021-04-09 15:51:11

由于您使用的是zsh,所以只需使用zmv

代码语言:javascript
复制
% autoload -Uz zmv  # Add this to your .zshrc file, to not have to type it again.
% mkdir -p par1 par2/par3
% touch par2/par3/{0..9}.gz
% zmv -v 'par2/(*)/(*).gz' 'par1/pmc_$2.gz'  # -v for verbose
mv -- par2/par3/0.gz par1/pmc_0.gz
mv -- par2/par3/1.gz par1/pmc_1.gz
mv -- par2/par3/2.gz par1/pmc_2.gz
mv -- par2/par3/3.gz par1/pmc_3.gz
mv -- par2/par3/4.gz par1/pmc_4.gz
mv -- par2/par3/5.gz par1/pmc_5.gz
mv -- par2/par3/6.gz par1/pmc_6.gz
mv -- par2/par3/7.gz par1/pmc_7.gz
mv -- par2/par3/8.gz par1/pmc_8.gz
mv -- par2/par3/9.gz par1/pmc_9.gz
%

PS:

mv -t看起来很有前途,但我用的是zsh。

mv不是zsh内置的。它是你操作系统的一部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67015170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档