重命名第一次出现的文件名

问题描述 投票:0回答:2

我正在尝试使用bash脚本或仅在命令行中重命名一批文件,但似乎找不到关于首次出现字符之前如何删除字符的任何内容。

现在我的文件被命名为:

author1_-_year_-_title_name.txt
author2_-_year_-_title_name.txt

而且我希望他们看起来像

_-_year_-_title_name.text

甚至

year_-_title_name.text

我在命令行中尝试过sed:

sed 's/^[^_-_]* _-_ //' *

但是这仅是尝试编辑文本文件,而不是文件名

bash filenames
2个回答
1
投票

您无法使用sed更改文件名。请尝试以下简单循环:

for fp in ./*_-_*; do
  echo mv "$fp" "${fp#*_-_}"
done

如果输出看起来不错,请删除echo


0
投票

您可以如下尝试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选项,它应该重命名文件。

© www.soinside.com 2019 - 2024. All rights reserved.