使用find命令的-exec操作批量重命名.py文件的更优方法咨询
使用find命令的-exec操作批量重命名.py文件的更优方法咨询
最近我正在学习bash,接触到了find命令,想借助它批量把所有.py文件重命名为.bak格式(比如把hello.py改成hello.bak)。
我原本觉得应该能写出这样的命令:
find -name "*.py" -exec mv {} NEW_NAME \;
这里的NEW_NAME就是重命名后的{}。
我试过好几种绕圈子的方法:
- 尝试把
{}赋值给变量:但没法在-exec里完成变量赋值(比如-exec a=1这类写法会直接报错) - 用管道组合命令:单独执行
echo $(echo ./hello.py | cut -d'.' -f2).bak能得到预期的/hello.bak,但把NEW_NAME替换成$(echo {} | cut -d'.' -f2).bak却完全不行
最后我终于实现了需求,用的是这条命令:
find -name "*.py" -exec bash -c 'mv $0 ${0/.py/.bak}' "{}" \;
不过我总感觉应该有更简单的实现方式,是不是我漏掉了什么显而易见的技巧?
补充说明:我知道除了
find ... -exec ...之外,还有其他批量重命名文件的方法,但我就是想找用这个命令组合实现的更优/更简洁的方式——我本来还盼着Linux里有类似Python的.replace()字符串方法的功能呢。
备注:内容来源于stack exchange,提问作者Swifty
相关产品推荐
相关产品推荐

