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



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

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

我期望的输出是CULT_IMAGE.shp.

我会使用rename实用程序

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

要删除每个数字,您可以执行sed sed 's/[0-9]//g'

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

之前

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

相关内容

  • 没有找到相关文章