我在这里错过了什么,这似乎很简单,但我不能得到它的工作。
我有一个像AGPNDRAH01.jpg文件的目录
我想要一个像AGPNDRAH01_00.jpg这样的文件的目录
rename 's/(\w+).jpg\$1\_00.jpg$//' *
没有,工作。 Centos Linux。 对我来说没有意义,为什么这不工作。
快速入门将做你在bash中描述的:
cd /directory for F in `ls -1 |awk -F. '{print $2}'` do mv $F.jpg ${F}_00.jpg done
重命名用法:
wmoore@bitbucket(/tmp/dowork)$ ls -1 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg wmoore@bitbucket(/tmp/dowork)$ rename .jpg _00.jpg *.jpg wmoore@bitbucket(/tmp/dowork)$ ls -1 1_00.jpg 2_00.jpg 3_00.jpg 4_00.jpg 5_00.jpg
尝试下面的bash脚本:
find . -type f -name "*.jpg" -print | while read FILE do mv "${FILE}" "`dirname ${FILE}`/`basename ${FILE} .jpg`_00.jpg" done
这将find当前目录中或下面的所有.jpg文件,并在.jpg之前插入_00 。 如果您只想要处理当前目录,请使用find . -maxdepth 1启动find命令find . -maxdepth 1 find . -maxdepth 1
我不熟悉重命名,但你的正则expression式看起来不正确。 看起来好像你正在试图匹配这样的文件名为AGPNDRAH01.jpg.AGPNDRAH01_00.jpg ,并将其名称更改为无。
你确定你不是这个意思吗?
rename 's/(\w+).jpg$/\$1\_00.jpg/' *
我有一个红帽的变种,重命名不支持's /'命令。 这是你的一行代码(你必须反斜杠括号和加号来获得sed中的function):
for fl in *.jpg; do mv $fl `echo $fl | sed 's/\(\w\+\).jpg/\1_00.jpg/'`; done
你只是在错误的地方斜线和不必要的反斜杠。
rename 's/(\w+).jpg/$1\_00.jpg/' *