重命名多个文件,同时在linux中保持相同的扩展名

dre*_*nox 3 linux bash awk rename file

我在目录中有100个文件,具有以下命名约定.

00XYZCD042ABCDE20141002ABCDE.XML
00XYZCC011ABCDE20141002.TXT
00XYZCB165ABCDE20141002ABCDE.TXT
00XYZCB165ABCDE20141002ABCDE.CSV
Run Code Online (Sandbox Code Playgroud)

我想用重命名这些文件bash,awk,cut,sed 所以我得到的输出

XYZCD042.XML
XYZCC011.TXT
XYZCB165.TXT
XYZCB165.CSV
Run Code Online (Sandbox Code Playgroud)

所以基本上总是删除前2 0,然后保留所有内容直到ABCDE启动,然后删除包括ABCDE在内的所有内容并保留文件扩展名.

请多多帮助

nne*_*neo 7

仅限Bash:

for fn in *; do
    A=${fn#00}
    mv $fn ${A/ABCDE*./.}
done
Run Code Online (Sandbox Code Playgroud)

for循环中的第一行剥离00前缀,第二行剥离ABCDE后缀(最多为一个点),然后执行重命名.


Avi*_*Raj 7

您可以尝试以下rename命令,

rename 's/ABCDE.*(\..*)/$1/;s/^00//' *
Run Code Online (Sandbox Code Playgroud)

说明:

  • s/ABCDE.*(\..*)/$1/匹配从第一个ABCDE到最后一个的所有字符,并仅捕获扩展部分.然后将所有匹配的字符替换为捕获的扩展名.
  • s/^00// 然后这将删除前两个零.