编写一个简单的脚本,自动重命名一些文件.作为一个例子,我们希望将文件*001.jpg重命名为用户定义的字符串+ 001.jpg(例如:MyVacation20110725_001.jpg)此脚本的用法是让数码相机照片具有合理的文件名.
我需要为此编写一个shell脚本.有人可以建议如何开始吗?
Sus*_*Pal 195
一个帮助您开始工作的例子.
for f in *.jpg; do mv "$f" "$(echo "$f" | sed s/IMG/VACATION/)"; done
Run Code Online (Sandbox Code Playgroud)
在此示例中,我假设您的所有图像文件都以"IMG"开头,并且您希望将"IMG"替换为"VACATION".
shell会自动评估*.jpg所有匹配的文件.
mv(文件的新名称)的第二个参数sed是将"IMG"替换为"VACATION" 的命令的输出.
如果您的文件名包含多个连续空格,请特别注意"$f"符号.您需要双引号来保留这些空格.
ted*_*ted 157
您可以使用重命名实用程序按模式重命名多个文件.例如,以下命令将字符串MyVacation2011_添加到具有jpg扩展名的所有文件.
rename 's/^/MyVacation2011_/g' *.jpg
Run Code Online (Sandbox Code Playgroud)
要么
rename <pattern> <replacement> <file-list>
Run Code Online (Sandbox Code Playgroud)
小智 28
for file in *.jpg ; do mv $file ${file//IMG/myVacation} ; done
Run Code Online (Sandbox Code Playgroud)
再次假设您的所有图像文件都有字符串"IMG",并且您想要将"IMG"替换为"myVacation".
使用bash,您可以使用参数扩展直接转换字符串.
示例:如果文件是IMG_327.jpg,mv则将执行该命令mv IMG_327.jpg myVacation_327.jpg.这将针对目录匹配中找到的每个文件完成*.jpg.
IMG_001.jpg - > myVacation_001.jpg
IMG_002.jpg - > myVacation_002.jpg
IMG_1023.jpg - > myVacation_1023.jpg etcetera
......
Suj*_*ale 21
这个例子,我假设您的所有图像文件都以"IMG"开头,并且您希望将"IMG"替换为"VACATION"
解决方案:首先确定所有jpg文件,然后替换关键字
find . -name '*jpg' -exec bash -c 'echo mv $0 ${0/IMG/VACATION}' {} \;
Run Code Online (Sandbox Code Playgroud)
Joh*_*ick 13
find . -type f |
sed -n "s/\(.*\)factory\.py$/& \1service\.py/p" |
xargs -p -n 2 mv
Run Code Online (Sandbox Code Playgroud)
例如,将重命名 cwd 中名称以“factory.py”结尾的所有文件,以替换为以“service.py”结尾的名称
解释:
在sedcmd 中,该-n标志将抑制在应用 s/// 命令后将输入回显到输出的正常行为,并且p如果进行替换,s/// 上的选项将强制写入输出。由于子只会在匹配时进行,因此 sed 只会输出以“factory.py”结尾的文件
在 s/// 替换字符串中,我们使用“ & ”将整个匹配字符串插入到替换字符串中,后跟一个空格字符。因此,我们的 RE 匹配整个文件名至关重要。在空格字符之后,我们使用“\1service.py”来插入我们在“factory.py”之前吞下的字符串,然后用“service.py”替换它。因此,对于更复杂的转换,您必须将参数更改为 s/// (re 仍然匹配整个文件名)
输出示例:
foo_factory.py foo_service.py
bar_factory.py bar_service.py
Run Code Online (Sandbox Code Playgroud)
xargswith-n 2一次使用 sed 2 个分隔字符串的输出,将它们传递给 mv (我还将 -p 选项放在那里,这样你在运行它时可以感到安全)。瞧。注意:如果您面临更复杂的文件和文件夹场景,这篇文章将更find详细地解释(以及一些替代方案)。
| 归档时间: |
|
| 查看次数: |
116115 次 |
| 最近记录: |