>我有文件夹,其中包含多个文件名为 2024_CULT_IMAGE_2012_03.shp
和 CULT_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