我有一堆错误命名为'something@x2.png'的图像文件,它们需要是'something@2x.png'。它们分布在多个目录中,如下所示:
/images
something@x2.png
/icons
icon@x2.png
/backgrounds
background@x2.png
如何根据需要使用grep + sed查找/替换?
答案 0 :(得分:1)
红宝石(1.9 +)
$ ruby -e 'Dir["**/*@x2.png"].each{|x| File.rename( x, x.sub(/@x2/,"@2x") ) }'
答案 1 :(得分:0)
bash 2.x/3.x
#!/bin/bash
while IFS= read -r -d $'\0' file; do
echo mv "$file" "${file/@x2/@2x}"
done < <(find images/ -type f -name "something*@x2*.png" -print0)
bash 4.x
#!/bin/bash
shopt -s globstar
for file in images/**; do
[[ "$file" == something*@x2*.png ]] && echo mv "$file" "${file/@x2/@2x}"
done
注意:强> 的
在每种情况下,我都留在echo
中,因此您可以进行干运行,如果输出足够则删除echo
答案 2 :(得分:0)
查看qmv并重命名
find -iname '*.png' -print0 | xargs -0 qmv -d
将启动默认编辑器,并允许您以交互方式编辑名称
rename s/@x2/@2x/ *.png
答案 3 :(得分:0)
斜线看起来像linuxy / unixoid给我。你找到并重命名了吗?
find -name "*@x2*" -execdir rename 's/@x2/@2x/' {} +
重命名值得安装,有一些perl-package。