Bash 在第一次出现字符之前重命名文件名
我试图使用bash脚本或仅在命令行中重命名一批文件,但似乎找不到任何关于如何在字符首次出现之前删除字符的信息 现在,我的文件名为:Bash 在第一次出现字符之前重命名文件名,bash,filenames,Bash,Filenames,我试图使用bash脚本或仅在命令行中重命名一批文件,但似乎找不到任何关于如何在字符首次出现之前删除字符的信息 现在,我的文件名为: author1_-_year_-_title_name.txt author2_-_year_-_title_name.txt 我希望他们看起来像 _-_year_-_title_name.text 甚至 year_-_title_name.text 我在命令行中尝试了sed: sed 's/^[^_-_]* _-_ //' * 但这只是试图编辑文本文件,而
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 -n s/[^-]*-_// *.txt
rename(author1_-_year_-_title_name.txt, year_-_title_name.txt)
rename(author2_-_year_-_title_name.txt, year_-_title_name.txt)
输出如下
rename -n s/[^-]*-_// *.txt
rename(author1_-_year_-_title_name.txt, year_-_title_name.txt)
rename(author2_-_year_-_title_name.txt, year_-_title_name.txt)
一旦您对上述结果感到满意,它将仅在终端上打印上述命令中的remove-n选项,并应重命名文件。您可以使用shell内置字符串操作来完成此操作:old='author1'\uuu-year'\uu-title'\u-name.txt';新=${old*.-\};echo$new