两步文件重命名
A two step file rename
我想将两部分代码组合成一个脚本,我可以用它来批量重命名文件。到目前为止,我做到了这一点:
前文件名:12345-[名称]_ABC_12345.txt
文件名之后:名称
for f in *.txt; do
mv "$f" "${f//]*}";
done
for f in *txt; do
echo mv "$f" "${f/*[/}";
done
假设我正确理解了您的要求,您似乎在寻找
for f in *\[*\]*.txt; do
head=${f%%\]*}
mv "$f" "${head#*\[}"
done
这将提取第一对方括号之间的部分并将其用作目标名称。 ${var#head}
和 ${var%tail}
return $var
的值,其前缀与 glob 表达式 head
匹配,或后缀与 tail
匹配,trim治疗结束。双运算符变体 trim 最长而不是最短匹配。
我想将两部分代码组合成一个脚本,我可以用它来批量重命名文件。到目前为止,我做到了这一点:
前文件名:12345-[名称]_ABC_12345.txt
文件名之后:名称
for f in *.txt; do
mv "$f" "${f//]*}";
done
for f in *txt; do
echo mv "$f" "${f/*[/}";
done
假设我正确理解了您的要求,您似乎在寻找
for f in *\[*\]*.txt; do
head=${f%%\]*}
mv "$f" "${head#*\[}"
done
这将提取第一对方括号之间的部分并将其用作目标名称。 ${var#head}
和 ${var%tail}
return $var
的值,其前缀与 glob 表达式 head
匹配,或后缀与 tail
匹配,trim治疗结束。双运算符变体 trim 最长而不是最短匹配。