从$ filename_h目录下的所有文件重命名为$ filename_half?从$ filena

2019-05-12 19:59发布

死的简单。

如何重命名

05_h.png
06_h.png

05_half.png
06_half.png

至少,我认为这很简单,但很难对谷歌这种事情,除非你已经知道了。

谢谢....

Answer 1:

只需使用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


Answer 2:

尝试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


Answer 3:

for f in *.png; do
  fnew=`echo $f | sed 's/_h.png/_half.png/'`
  mv $f $fnew
done


Answer 4:

您是否在寻找一个纯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

假设这两个例子是你的唯一。 文件。

对于一般的情况下,重命名文件中已 被 覆盖 前 。



Answer 5:

使用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


Answer 6:

我有一个类似的问题:在手册中,它描述重命名为

rename [option] expression replacement file

这样你就可以以这种方式使用它

rename _h _half *.png

在代码:“_H”是你正在寻找的表达。 “_half”就是你要替换的模式。 “* .PNG”是一个文件,你正在寻找的可能的目标文件的范围。

希望这可以帮助C:



Answer 7:

for i in *_h.png ; do
  mv $i `echo "$i"|awk -F'.' '{print $1"alf."$2}'`
done


Answer 8:

另一种方法可以使用批量重命名的选项手动

右键点击文件 - >文件自定义命令 - >批量重命名,你可以更换小时。 半。

这将使用的WinSCP等,为基于Linux GUI工作



Answer 9:

使用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


Answer 10:

一个内胆:
for file in *.php ; do mv "$file" "_$file" ; done



文章来源: Rename all files in directory from $filename_h to $filename_half?
标签: bash shell