在第一次出现字符之前重命名文件名

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 选项,它应该重命名文件。