在第一次出现字符之前重命名文件名
Renaming filename before first occurrence of character
我正在尝试使用 bash 脚本或仅在命令行中重命名一批文件,但似乎无法找到任何有关如何在字符首次出现之前删除字符的信息。
现在我的文件命名为:
author1_-_year_-_title_name.txt
author2_-_year_-_title_name.txt
我希望它们看起来像
_-_year_-_title_name.text
甚至
year_-_title_name.text
我在命令行中尝试过 sed:
sed 's/^[^_-_]* _-_ //' *
但这只是试图编辑文本文件,而不是文件名
您无法使用 sed
更改文件名。试试这个简单的循环:
for fp in ./*_-_*; do
echo mv "$fp" "${fp#*_-_}"
done
如果输出看起来不错,请删除 echo
。
你能试试下面的rename
命令吗?
rename -n s/[^-]*-_// *.txt
输出如下。
rename(author1_-_year_-_title_name.txt, year_-_title_name.txt)
rename(author2_-_year_-_title_name.txt, year_-_title_name.txt)
一旦您对上述结果感到满意(仅在终端上打印),请删除上述命令中的 -n
选项,它应该重命名文件。
我正在尝试使用 bash 脚本或仅在命令行中重命名一批文件,但似乎无法找到任何有关如何在字符首次出现之前删除字符的信息。
现在我的文件命名为:
author1_-_year_-_title_name.txt
author2_-_year_-_title_name.txt
我希望它们看起来像
_-_year_-_title_name.text
甚至
year_-_title_name.text
我在命令行中尝试过 sed:
sed 's/^[^_-_]* _-_ //' *
但这只是试图编辑文本文件,而不是文件名
您无法使用 sed
更改文件名。试试这个简单的循环:
for fp in ./*_-_*; do
echo mv "$fp" "${fp#*_-_}"
done
如果输出看起来不错,请删除 echo
。
你能试试下面的rename
命令吗?
rename -n s/[^-]*-_// *.txt
输出如下。
rename(author1_-_year_-_title_name.txt, year_-_title_name.txt)
rename(author2_-_year_-_title_name.txt, year_-_title_name.txt)
一旦您对上述结果感到满意(仅在终端上打印),请删除上述命令中的 -n
选项,它应该重命名文件。