死简单.
我该如何重命名
05_h.png
06_h.png
Run Code Online (Sandbox Code Playgroud)
至
05_half.png
06_half.png
Run Code Online (Sandbox Code Playgroud)
至少,我认为这很简单,但除非你已经知道,谷歌很难做到这一点.
谢谢....
bas*_*ist 273
只需使用bash,无需调用外部命令.
for file in *_h.png
do
mv "$file" "${file/_h.png/_half.png}"
done
Run Code Online (Sandbox Code Playgroud)
不要添加 #!/bin/sh
对于那些需要单行的人:
for file in *.png; do mv "$file" "${file/_h.png/_half.png}"; done
Run Code Online (Sandbox Code Playgroud)
Mic*_*jer 54
尝试rename命令:
rename 's/_h.png/_half.png/' *.png
Run Code Online (Sandbox Code Playgroud)
更新:
示例用法:
创造一些内容
$ mkdir /tmp/foo
$ cd /tmp/foo
$ touch one_h.png two_h.png three_h.png
$ ls
one_h.png three_h.png two_h.png
Run Code Online (Sandbox Code Playgroud)
测试方案:
$ rename 's/_h.png/_half.png/' *.png
$ ls
one_half.png three_half.png two_half.png
Run Code Online (Sandbox Code Playgroud)
for f in *.png; do
fnew=`echo $f | sed 's/_h.png/_half.png/'`
mv $f $fnew
done
Run Code Online (Sandbox Code Playgroud)
您在寻找纯粹的bash解决方案吗?有很多方法,但这里有一个.
for file in *_h.png ; do mv "$file" "${file%%_h.png}_half.png" ; done
Run Code Online (Sandbox Code Playgroud)
这假定当前目录中唯一以_h.png您要重命名的文件结尾.
更具体地说
for file in 0{5..6}_h.png ; do mv "$file" "${file/_h./_half.}" ; done
Run Code Online (Sandbox Code Playgroud)
假设这两个例子是你唯一的例子.文件.
使用rename用 perl 编写的实用程序。可能是默认情况下它不可用...
$ touch 0{5..6}_h.png
$ ls
05_h.png 06_h.png
$ rename 's/h/half/' *.png
$ ls
05_half.png 06_half.png
Run Code Online (Sandbox Code Playgroud)
for i in *_h.png ; do
mv $i `echo "$i"|awk -F'.' '{print $1"alf."$2}'`
done
Run Code Online (Sandbox Code Playgroud)
小智 5
我有一个类似的问题:在手册中,它描述了重命名为
rename [option] expression replacement file
Run Code Online (Sandbox Code Playgroud)
所以你可以这样使用它
rename _h _half *.png
Run Code Online (Sandbox Code Playgroud)
在代码中:“_h”是您要查找的表达式。'_half' 是您要替换的模式。“*.png”是您正在寻找可能的目标文件的文件范围。
希望这可以帮助c: