我有以下图片。
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 来获得我自己的输出?
最佳答案
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 本身管理的环境变量。
关于linux - 使用linux shell脚本重命名多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48019000/