Linux/Mac下命令行批量修改文件夹名

一般来说在linux/unix下命令行更强大, windows上可以装cygwin来模拟各种命令的执行.
比如我们的目标是将当前目录中的所有的org文件夹改名为com, 包括子目录中的文件夹.
我们一步一步来.

find . -name org

这个命令可以列出当前目录中所有的org文件的路径, 注意org是可以看成是文件的.
接下来我们将输出作为下一个命令的输入, 在它们之间加上管道符号|就可以了

find . -name org | awk -F "/" 'for(i=1;i<NF;++i) printf("%s/",$i);printf "\n"}'

注意不要换行, 文章里面的代码可能因为宽度不够换行, 实际输入是不换行的.
我们在管道符后面加的命令意思是用/分割前面的结果, 然后把除最后一个片段外的东西原样输出.
比如之前是./src/java/org就会变成./src/java/
接下来我们再接一个管道符.

find . -name org | awk -F "/" 'for(i=1;i<NF;++i) printf("%s/",$i);printf "\n"}' | xargs -i mv {}org {}com

xargs后面的-i(也有可能是-l, 自己可以试一下), 可以让我们用{}来代替前面的单行结果, 注意每行都会被它执行一遍, 我们只需要考虑一行的结果就行了, 后面的mv就是改名了, 这里{}代表我们前面得到的结果, 我们代入一下就可以知道它执行的是:

mv ./src/java/org ./src/java/com

其实就是改名的操作, 只不过这是我们让shell自己找到所有要改的文件, 然后分别执行这个操作.
命令是活的, 许多组合方式有意想不到的功能.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值