我需要重命名超过 1500 个 *.jpg 文件。我有带有 2 列文件名列表的文本文件,制表符分隔:
- 1305 1979
- 1310 173
- 1311 172
旧文件名 - 新文件名
- 1305_1.jpg - 1979
- 1310_main_origin.jpg - 173
- 1311_2.jpg - 172
我如何检查第一列和旧文件名的前 4 位数字并从 2 列重命名为另外 4 位数字?
//对不起我的英语不好
我需要重命名超过 1500 个 *.jpg 文件。我有带有 2 列文件名列表的文本文件,制表符分隔:
旧文件名 - 新文件名
我如何检查第一列和旧文件名的前 4 位数字并从 2 列重命名为另外 4 位数字?
//对不起我的英语不好
使用如下所示的循环:
while read -r old new
do
arr=( ${old}_*.jpg )
if (( ${#arr[@]} == 1 ))
then
mv "${arr[0]}" "$new.jpg"
else
echo "Error: Multiple files found for $old: ${arr[@]}"
fi
done < file
请注意,有一项安全检查可确保您没有多个具有相同前缀的文件。例如,如果您有1305_1.jpg
并且1305_2.jpg
不能将它们都重命名为1979.jpg
,则脚本将打印错误。
试试这个,并在验证它是你想要的之后删除 echo。changefile
是包含更改的文件的名称
while read from to; do
echo "mv ${from}* $to"
done < changefile
您应该反转 order 更改文件以确保在 130 之前和 13 之前应用 1306
我已经为另一个问题发布了这个答案,但这个答案在问题、关键字和复杂性方面似乎更相关,我也会在这里添加它。
您可以使用小型 linux 应用程序名称 krename,并打开 javascript 插件。它是一个免费工具,具有非常强大的重命名功能。
转到插件选项卡并将您的 javascript 函数添加到函数定义部分,如下所示:
var files = [
"Mickey",
"Donald",
"Duffy"
];
function rename(){
// krename_index is one of many special variables which can be added via ui
return files[krename_index];
}
这是一个可以完成工作的简单脚本,但它可以根据您的喜好复杂。
转到文件名选项卡并在模板输入中调用您的函数,如下所示:
[js; rename()]
您可以为上述代码添加前缀$
以保留原始文件名并添加到其中。您可以使用“功能”按钮进行进一步实验。