我试图使用rename
来编辑或修剪文件名,而不使用loop
。下面的两个命令都会执行,但文件名保持不变。在我的实际数据中,有几个文件名都是file
的格式。谢谢 :)。
文件
19-0000-LastName-FirstName_v1_Non-Filtered_2019-03-21_08:12:56.txt
改名
rename "s/_v1_Non-Filtered_d+_\d+//" *.txt
rename 's/_.*?//' *.txt
所需文件名
19-0000-LastName-FirstName.txt
问题是重命名文件,如:
19-0000-LastName-FirstName_v1_Non-Filtered_2019-03-21_08:12:56.txt
至:
19-0000-LastName-FirstName.txt
在英语中,根据评论,可以表述为:
删除包括
_v1
在内的所有内容(保留扩展名除外)
这可以通过搜索和替换完成,如:
rename 's/_v1.*(\..*)/$1/' *.txt
_v1
随后尽可能多的东西(.*
)
然后是一段时期(\.
)
其次是什么(.*
).*
,明确匹配的时期必须是最后一个(
... )
捕获比赛的一部分供以后使用(如$1
)笔记:
_d+_\d+
,由于缺少\
匹配“下划线”“d”“+”“下划线”“一个或多个数字”。这永远不会与您的文件名匹配。也许你的意思是:_\d+
s/_.*?//
寻找_
,然后是最短的可能序列(*?
)(.
)。任何事物的最短可能序列是空字符串。因此,该命令相当于:s/_//