Bash重命名以数字开头的字符串

时间:2016-05-20 13:32:32

标签: bash sed rename

我的文件夹包含多个文件,其名称如2024_CULT_IMAGE_2012_03.shpCULT_IMAGE_2017_03.shp如何测试字符串是否以数字开头。我知道在测试它们时如何重命名它们。我用reg-ex测试文件是否包含数字,但我不确定如何测试字符串的开头。

if [[  $file =~ [0-9]   ]];
then
    do something

我期望的输出是CULT_IMAGE.shp

3 个答案:

答案 0 :(得分:1)

我会使用rename实用程序

rename 's/^\d+_//' *.shp

答案 1 :(得分:0)

要使用sed删除每个数字,您只需执行sed 's/[0-9]//g'

即可

因此,您应该能够快速调整它以仅删除第一个数字

答案 2 :(得分:0)

之前

ls -lrt
total 4
-rw-rw-r--  1 user super 173 May 20 09:58 main
-rw-rw-r--  1 user super   0 May 20 10:13 CULT_IMAGE_2017_1111132.shp
-rw-rw-r--  1 user super   0 May 20 10:13 2024_CULT_IMAGE_2012_03.shp


#Execution:Rename files which starts with numbers.

./main

执行后

ls -lrt
total 4
-rw-rw-r--  1 user super 173 May 20 09:58 main
-rw-rw-r--  1 user super   0 May 20 10:13 CULT_IMAGE_2017_1111132.shp
-rw-rw-r--  1 user super   0 May 20 10:13 CULT_IMAGE.shp

文件

cat main
for file in *.shp
    do

if [[ "$file" =~ "^[0-9]" ]];then


newName=$(echo $file | sed -e 's/[0-9]//g' -e 's/^_//' -e 's/__.shp/.shp/')

mv $file $newName
fi
     done