bash 文件重命名
时间: 2023-11-15 17:45:53 浏览: 33
在Linux中,可以使用bash脚本或命令行来批量重命名文件。下面是一个示例的bash脚本:
```bash
#!/bin/bash
set -x
if [ $# -lt 2 ]; then
echo "Usage: rename oldfilename newfilename"
exit 1
fi
oldfilename=`dirname "$1"`/`basename "$1"`
newfilename=`dirname "$2"`/`basename "$2"`
if [ ! -f "$oldfilename" ]; then
echo "Input filename please"
exit 1
fi
ls `dirname "$newfilename"` | grep "^`basename $newfilename`$" >/dev/null 2>&1
if [ $? == 0 ]; then
echo "The file already exists. Do you want to continue?"
while true; do
read x
if [ "$x" = Y -o "$x" = y ]; then
mv -f "$oldfilename" "$newfilename"
break
else
echo "Please input another new filename"
read ofilename
ls `dirname $ofilename` | grep "^`basename $ofilename`$" >/dev/null 2>&1
if [ $? == 0 ]; then
echo "The file already exists. Do you want to continue?"
read y
if [ "$x" = 'Y' -o "$x" = 'y' ]; then
mv -f "$oldfilename" "$ofilename"
break
else
continue
fi
else
mv "$oldfilename" "$ofilename"
break
fi
fi
done
else
mv "$oldfilename" "$newfilename"
fi
```
这个脚本使用了mv命令来重命名文件。在脚本中,首先判断输入的参数是否满足要求,然后获取旧文件名和新文件名。接下来,判断旧文件是否存在,如果不存在则提示输入文件名并退出。然后,检查新文件名是否已存在,如果存在则询问是否继续操作,根据用户的输入进行不同的处理。最后,使用mv命令进行文件重命名操作。
另外,如果你只需要对当前目录下的图像文件进行重命名,你可以使用下面这个bash脚本:
```bash
#!/bin/bash
set -x
count=1
for img in *.jpg *.png; do
new="image-$count.${img##*.}"
mv "$img" "$new" 2>/dev/null
if [ $? -eq 0 ]; then
count=$((count + 1))
fi
done
```
这个脚本使用一个循环来遍历当前目录下的所有jpg和png图像文件。然后,使用`${img##*.}`来获取文件的扩展名,并使用`$count`来生成新的文件名。最后,使用mv命令进行文件重命名操作,并将错误输出重定向到/dev/null。如果重命名成功,则增加$count的值,以便为下一个文件生成新的文件名。
希望以上信息对你有帮助。