Mech Asked: 2010-03-25 10:25:22 +0800 CST2010-03-25 10:25:22 +0800 CST 2010-03-25 10:25:22 +0800 CST Linux重命名文件以在扩展名之前的文件名之后添加_00 772 我在这里错过了什么,这看起来很简单,但我无法让它工作。 我有一个目录,其中包含 AGNDRAH01.jpg 之类的文件 我想要一个包含 APGPNDRAH01_00.jpg 等文件的目录 rename 's/(\w+).jpg\$1\_00.jpg$//' * 不,工作。Centos Linux。对我来说为什么这不起作用毫无意义。 linux centos rename 6 个回答 Voted Best Answer Warner 2010-03-25T10:36:39+08:002010-03-25T10:36:39+08:00 快速破解,可以完成您在 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 Cry Havok 2010-03-25T10:39:36+08:002010-03-25T10:39:36+08:00 尝试以下 bash 脚本: find . -type f -name "*.jpg" -print | while read FILE do mv "${FILE}" "`dirname ${FILE}`/`basename ${FILE} .jpg`_00.jpg" done 这将在当前目录中或当前目录下找到所有 .jpg 文件并在 .jpg_00之前插入.jpg。如果您只希望它处理当前目录,请使用 find 命令启动find . -maxdepth 1 Cyrill Kovtun 2020-07-21T22:30:38+08:002020-07-21T22:30:38+08:00 正则表达式末尾的双反斜杠表示用空字符串替换s /(\w+).jpg$1_00.jpg$。 我用这个: rename 's/\.jpg/_00.jpg/' *.jpg Zoredache 2010-03-25T10:34:49+08:002010-03-25T10:34:49+08:00 我不熟悉重命名,但你的正则表达式看起来不正确。看起来您正在尝试匹配名为APGPNDRAH01.jpg.AGPNDRAH01_00.jpg的文件并将其名称更改为空。 你确定你的意思不是这样吗? rename 's/(\w+).jpg$/\$1\_00.jpg/' * bradlis7 2010-03-25T10:49:46+08:002010-03-25T10:49:46+08:00 我有一个 redhat 的变体,并且 rename 不支持 's/' 命令。这是一个适合您的单行代码(您必须使用反斜杠括号和加号才能获得 sed 中的功能): for fl in *.jpg; do mv $fl `echo $fl | sed 's/\(\w\+\).jpg/\1_00.jpg/'`; done Dennis Williamson 2010-03-25T11:51:55+08:002010-03-25T11:51:55+08:00 你只是在错误的地方有一个斜杠和一个不必要的反斜杠。 rename 's/(\w+).jpg/$1\_00.jpg/' *
快速破解,可以完成您在 bash 中描述的操作:
对于重命名用法:
尝试以下 bash 脚本:
这将在当前目录中或当前目录下找到所有 .jpg 文件并在 .jpg
_00
之前插入.jpg
。如果您只希望它处理当前目录,请使用 find 命令启动find . -maxdepth 1
正则表达式末尾的双反斜杠表示用空字符串替换s /(\w+).jpg$1_00.jpg$。
我用这个:
我不熟悉重命名,但你的正则表达式看起来不正确。看起来您正在尝试匹配名为APGPNDRAH01.jpg.AGPNDRAH01_00.jpg的文件并将其名称更改为空。
你确定你的意思不是这样吗?
我有一个 redhat 的变体,并且 rename 不支持 's/' 命令。这是一个适合您的单行代码(您必须使用反斜杠括号和加号才能获得 sed 中的功能):
你只是在错误的地方有一个斜杠和一个不必要的反斜杠。