写一个shell脚本,将一个目录下所有包含某个关键字的文件全部重命名
时间: 2024-09-11 08:12:07 浏览: 48
创建一个Shell脚本来批量重命名包含特定关键字的所有文件,你可以使用`rename`命令或者`find`、`grep`和`mv`等基本命令结合使用。这里是一个简单的示例,假设关键字是"old_name":
```bash
#!/bin/bash
# 定义目标目录
dir="/path/to/your/directory"
# 定义要查找的关键字
keyword="old_name"
# 使用find查找包含关键字的文件
files=$(find "$dir" -type f -name "*$keyword*")
# 遍历找到的文件并替换关键字,然后重命名
for file in $files; do
# 使用sed命令替换关键字,这里假设新名字前加上日期和序号
new_name=$(date +%Y%m%d%H%M%S)-$(basename "$file" .*)_"$keyword"_$(echo $((++counter)))
mv "$file" "${dir}/${new_name}"
done
# 提示用户脚本已经完成,并询问是否有其他需要处理的目录
echo "All files containing '$keyword' have been renamed."
read -p "Do you want to process another directory? (yes/no): " response
if [ "$response" == "yes" ]; then
# 如果用户输入yes,可以循环这个脚本处理更多目录
bash script_to_rename.sh
fi
```
**注意:** 运行此脚本之前,请确保你有权限修改文件,并且在`mv`操作时确认新文件名不会覆盖已有文件。
阅读全文