Kev*_*vin 10 rename batch-rename
如何从文件夹中的文件名中删除一些文本?
我目前正在尝试:
rename s/"NEWER_(.*?)"//g *
Run Code Online (Sandbox Code Playgroud)
但没有什么被重命名
我有一个父文件夹,里面有一堆子文件夹,里面有文件,OneDrive 认为将“(NEWER_timestamp)”附加到其中是个好主意,我想删除它。
示例文件名:
getyou.ico (NEWER_1417529079.87)
o7pm.ico (NEWER_1417529184.89)
o7th.ico (NEWER_1417529135.81)
Run Code Online (Sandbox Code Playgroud)
请尝试以下操作:
find /path/to/parrent-dir -type f -exec rename -n 's:[^/]*(.*) .*$:$1:' {} +
./o7th.ico (NEWER_1417529135.81) renamed as /o7th.ico
./sub-dir (NEWER_1417529135.81)/getyou.ico (NEWER_1417529079.87) renamed as /sub-dir (NEWER_1417529135.81)/getyou.ico
./sub-dir (NEWER_1417529135.81)/o7pm.ico (NEWER_1417529184.89) renamed as /sub-dir (NEWER_1417529135.81)/o7pm.ico
./getyou.ico (NEWER_1417529079.87) renamed as /getyou.ico
./o7pm.ico (NEWER_1417529184.89) renamed as /o7pm.ico
Run Code Online (Sandbox Code Playgroud)
[^/]*(.*) .*$
仅匹配路径的最后一部分不包含/
. 和(.*)
是一组匹配最后/
一个空格之前的所有内容
。它的反向引用将是$1
..*$
$
空格后匹配文件名末尾的所有内容。s/.../REPLACEMENT/
,我们只保留了位于 last\
和(.*)
称为匹配组的空格之间的匹配组。