我的文件夹包含多个文件,其名称如2024_CULT_IMAGE_2012_03.shp
和CULT_IMAGE_2017_03.shp
如何测试字符串是否以数字开头。我知道在测试它们时如何重命名它们。我用reg-ex测试文件是否包含数字,但我不确定如何测试字符串的开头。
if [[ $file =~ [0-9] ]];
then
do something
我期望的输出是CULT_IMAGE.shp
。
答案 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