写一个shell脚本,递归查找一个目录下所有包含某个关键字的文件,并将这些文件全部重命名
时间: 2024-09-11 13:12:40 浏览: 45
shell 递归遍历目录下的所有文件并统一改名的方法
5星 · 资源好评率100%
你可以创建一个简单的Shell脚本来实现这个功能。以下是一个基础的bash shell script示例,它会递归搜索指定目录及其子目录,查找包含特定关键字的所有文件,并将它们重命名为"原名_关键字".txt:
```sh
#!/bin/bash
# 定义函数递归查找并重命名文件
search_and_rename() {
local dir="$1"
local keyword="$2"
# 使用find命令查找含有关键字的文件
files_with_keyword=$(find "$dir" -type f \( -name "*$keyword*" \) 2>/dev/null)
if [ ! -z "$files_with_keyword" ]; then
echo "Found matching files in $dir:"
for file in $files_with_keyword; do
# 获取原始文件名(去掉路径)
original_name=$(basename "$file")
# 生成新的文件名,添加关键字后缀
new_name="${original_name%.*}_${keyword}.txt"
# 重命名文件
mv "$file" "$dir/$new_name"
echo "- Renamed $file to $dir/$new_name"
done
fi
# 如果目录下还有子目录,继续递归遍历
for subdir in "$dir"/*; do
if [ -d "$subdir" ]; then
search_and_rename "$subdir" "$keyword"
fi
done
}
# 调用函数,提供要搜索的目录和关键字
search_and_rename "/path/to/search/" "your_keyword"
#
阅读全文