我正在尝试使用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
答案 0 :(得分:1)
问题是重命名文件,例如:
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/_//