查找当前目录下以.jpg
结尾的文件,并重命名为__test.jpg
结尾的文件名。
for file in *.jpg; do mv "$file" "${file%.jpg}_test.jpg"; done
mv "$file" "${file%.jpg}_input.jpg"
是用于重命名文件的命令,其中涉及了文件名的处理和变量替换。以下是对这个命令的详细解释:
1. mv
命令
mv
是 Linux 中的一个命令,用于移动文件或重命名文件。这里使用mv
来实现文件的重命名。
2. "$file"
"$file"
是一个变量,它在脚本或循环中代表当前文件的名称。- 使用双引号
"..."
是为了防止文件名中包含空格或特殊字符时出错,确保文件名能够被正确识别和处理。
3. ${file%.jpg}
${file%.jpg}
是一个 参数扩展 或 变量替换 操作,用于对变量file
的值进行处理。file
变量代表文件名,比如example.jpg
。${file%.jpg}
的作用是将变量file
的值中匹配.jpg
的部分删除。file
变量的值可能是example.jpg
。${file%.jpg}
的结果就是example
。
%
是一种模式匹配操作,在这里用于去掉变量值中最右边的匹配内容。.jpg
是模式,表示要去掉.jpg
这个后缀。
4. "${file%.jpg}_input.jpg"
- 这一部分是将上一步得到的文件名结果加上
_input.jpg
后缀。 - 继续上面的例子,如果
file
是example.jpg
,那么${file%.jpg}_input.jpg
结果就是example_input.jpg
。
5. 整个命令解释
- 假设有一个文件名为
example.jpg
,变量file
代表这个文件。 ${file%.jpg}
会把example.jpg
变成example
。${file%.jpg}_input.jpg
会把example
变成example_input.jpg
。mv "$file" "${file%.jpg}_input.jpg"
会将原来的example.jpg
文件重命名为example_input.jpg
。
总结
${file%.jpg}
:从文件名中去掉.jpg
后缀。"${file%.jpg}_input.jpg"
:去掉.jpg
后缀后,在文件名末尾添加_input.jpg
。mv "$file" "${file%.jpg}_input.jpg"
:将文件名从原始的example.jpg
重命名为example_input.jpg
。
这个命令在循环中会对每个 .jpg
文件进行这种重命名操作。