我有以下图片。
10.jpg
11.jpg
12.jpg
我想删除上面的图片。我使用了以下shell脚本文件。
for file in /home/scrapping/imgs/*
do
COUNT=$(expr $COUNT + 1)
STRING="/home/scrapping/imgs/""Img_"$COUNT".jpg"
echo $STRING
mv "$file" "$STRING"
done
所以,替换了文件名
Img_1.jpg
Img_2.jpg
Img_3.jpg
但是,我想替换这样的文件名:
Img_10.jpg
Img_11.jpg
Img_12.jpg
那么,如何设置COUNT
值10以获得我自己的输出?
答案 0 :(得分:4)
expr
语法已经过时,POSIX shell允许您使用$(())
语法进行算术评估。你可以做到
#!/usr/bin/env bash
count=10
for file in /home/scrapping/imgs/*; do
[ -f "$file" ] || continue
mv "$file" "/home/scrapping/imgs/Img_$((count++)).jpg"
done
同样根据评论中报告的错误,您似乎是从dash
shell运行它。它似乎没有符合标准POSIX shell的所有功能。使用sh
或bash
shell运行它。
并且在shell脚本中始终对用户定义的变量使用小写字母。大写字母主要用于shell本身管理的环境变量。
答案 1 :(得分:1)
使用rename命令,您可以使用 Img _ :
为文件添加后缀rename 's/^/Img_/' *
^ 表示用 Img _ 替换文件名的开头,即:添加后缀。