在bash中重命名大量文件

时间:2013-12-02 21:56:28

标签: linux bash

我有一大堆要重命名的文件。

很像this

所以这就是我的文件的样子

something.pcap1
something.pcap10
something.pcap11
something.pcap12
...
something.pcap111
something.pcap1111

基本上我想重命名所有文件,以便数字用0填充,它们是5位数字。

something.pcap00001

3 个答案:

答案 0 :(得分:3)

一个简单的for循环应该可以做到(可以是脚本文件):

for file in $(ls -1 something.pcap*); do
    [[ ${file} =~ ^something.pcap([[:digit:]]*).* ]]
    newfile=$(printf "something.pcap%05d" ${BASH_REMATCH[1]})
    mv ${file} ${newfile}
done

答案 1 :(得分:1)

这样的东西?

rename 's/\d+$/sprintf("%05d",$&)/e' soemthing.pcap*

注意:这适用于debian及其派生词中的重命名

答案 2 :(得分:0)

这样的事情怎么样?

#!/bin/bash
for i in $(ls something.pcap*); do
 q=$(echo $i|sed -e 's/pcap/pcap00000/;s/pcap0*\([0-9]\{6,\}\)$/pcap\1/')
 mv $i $q
done

我希望这会有所帮助