繁体   English   中英

如何在bash中递归替换文件名的一部分

[英]How to replace recursively part of file name in bash

我有一个包含子目录的目录,该子目录包含名称错误的图像文件,例如filename.jpg.jpg,我想用我尝试过的filename.jpg替换此递归方法:

find ./ -type f -exec sed -i 's/string1/string2/g' {} \;

要么

sed -i 's/foo/bar/g' *

但没有办法

谢谢

find ./ -iname "*.jpg.jpg" -exec rename .jpg.jpg .jpg '{}' \;

如果您有使用perl正则表达式的rename实用程序,请使用以下命令:

find ./ -iname "*.jpg.jpg" -exec rename 's/\.jpg\.jpg$/.jpg/' '{}' \;

可能是您可以使用内置的rename命令。

rename 's/\.jpg\.jpg$/.jpg/' *.jpg.jpg

第一个参数是一个正则表达式,它将匹配.jpg.jpg结尾的文件名并替换为.jpg 第二个参数将在当前目录中查找 .jpg.jpg格式的文件。

有关更多信息,请阅读手册页。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM