2017-08-30 95 views
-3

如何批量重命名多个文件?我寻求的是从文件名开头删除随机字符的正则表达式方法?Bash正则表达式:从文件名中删除字符

例如,假设我有一个目录

_3cc10c0294ce15295e17e737a1d4dde1_C1W2L08.pptx 
_7beaa0a223aca1d64505e8382275bb8e_C1W2L09-2.05.53-PM.pptx 
_090fd2695e7f30570037a0fae658035a_C1W2L07.pptx 

,并在这里将以下文件是我所看到:

C1W2L08.pptx 
C1W2L09-2.05.53-PM.pptx 
C1W2L07.pptx 
+1

你试图解决这个问题的尝试是什么? – Inian

+0

@Inian我用手重命名每个文件! – sci9

回答

0

使用rename

rename 's/_.{32}_//' *.pptx 

删除下划线和他们之间的32个字符。

+0

Merci为简单漂亮的方法。 – sci9

0
for i in *.pptx 
do 
    mv $i ${i#_*_} 
done 

#{var#prefix}将删除前缀; *匹配一系列字符。查看更多man bash,查找“参数扩展”。

0

此代码将选择所有类似结构的文件并删除它们的前缀。

for file in _[a-z0-9]*pptx; do 
     mv -- "$file" "${file/_*_/}"; 
done 
相关问题