死了简单。
如何重命名
05_h.png
06_h.png
到
05_half.png
06_half.png
至少,我认为这很简单,但除非你已经知道,谷歌很难做到这一点。
...谢谢
答案 0 :(得分:244)
只需使用bash,无需调用外部命令。
for file in *_h.png
do
mv "$file" "${file/_h.png/_half.png}"
done
请勿添加#!/bin/sh
对于那些需要单行的人:
for file in *.png; do mv "$file" "${file/_h.png/_half.png}"; done
答案 1 :(得分:50)
尝试rename
命令:
rename 's/_h.png/_half.png/' *.png
<强>更新强>
示例用法:
制作一些内容
$ 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
测试解决方案:
$ rename 's/_h.png/_half.png/' *.png
$ ls
one_half.png three_half.png two_half.png
答案 2 :(得分:9)
for f in *.png; do
fnew=`echo $f | sed 's/_h.png/_half.png/'`
mv $f $fnew
done
答案 3 :(得分:8)
您在寻找纯粹的bash解决方案吗?有很多方法,但这里有一个。
for file in *_h.png ; do mv "$file" "${file%%_h.png}_half.png" ; done
这假定当前目录中以_h.png
结尾的唯一文件是您要重命名的文件。
更具体地说
for file in 0{5..6}_h.png ; do mv "$file" "${file/_h./_half.}" ; done
假设这两个例子是你唯一的例子。文件。
答案 4 :(得分:4)
使用perl编写的rename
实用程序。
可能是默认情况下它不可用......
$ 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
答案 5 :(得分:3)
我有一个类似的问题: 在手册中,它将重命名描述为
rename [option] expression replacement file
所以你可以这样使用它
rename _h _half *.png
在代码中: &#39; _h&#39;是你正在寻找的表达。 &#39; _half&#39;是您要替换的模式。 &#39; *。PNG&#39;是您正在寻找可能的目标文件的文件范围。
希望这可以帮助c:
答案 6 :(得分:2)
for i in *_h.png ; do
mv $i `echo "$i"|awk -F'.' '{print $1"alf."$2}'`
done
答案 7 :(得分:1)
另一种方法可以手动使用批量重命名选项
右键单击该文件 - &gt;文件自定义命令 - &gt;批量重命名 你可以替换h。一半。
这适用于使用WinSCP等的基于linux的gui
答案 8 :(得分:0)
使用rename
实用程序:
rc@bvm3:/tmp/foo $ touch 05_h.png 06_h.png
rc@bvm3:/tmp/foo $ rename 's/_h/_half/' *
rc@bvm3:/tmp/foo $ ls -l
total 0
-rw-r--r-- 1 rc rc 0 2011-09-17 00:15 05_half.png
-rw-r--r-- 1 rc rc 0 2011-09-17 00:15 06_half.png
答案 9 :(得分:0)
一个班轮:
for file in *.php ; do mv "$file" "_$file" ; done
答案 10 :(得分:0)
尽管答案集已经完成,但我需要添加另一个缺少的答案。
for i in *_h.png;
do name=`echo "$i" | cut -d'_' -f1`
echo "Executing of name $name"
mv "$i" "${name}_half.png"
done