我的所有图片文件都在 media/Images 目录下,你要是用这个脚本,记得替换一下这个路径。另外,建议先把所有笔记复制备份一下,避免脚本修改失败,导致无法恢复。
```shell
#!/bin/bash
# 定义替换图像格式的函数
replace_image_format() {
file="$1"
# 定义目标格式的正则表达式(包含"media/Images"的情况)
pattern_with_path='!\[\[media/Images/([^]]+)\]\]'
# 定义目标格式的正则表达式(不包含"media/Images"的情况)
pattern_without_path='!\[\[([^]]+)\]\]'
# 读取文件内容
content=$(cat "$file")
# 检查文件内容是否包含"media/Images",并根据情况替换图像格式
if [[ "$content" == *"media/Images"* ]]; then
new_content=$(echo "$content" | sed -E "s#$pattern_with_path#![](media/Images/\\1)#g")
else
new_content=$(echo "$content" | sed -E "s#$pattern_without_path#![](media/Images/\\1)#g")
fi
# 处理文件名中的宽度内容(如果有),并移除竖线
new_content=$(echo "$new_content" | sed -E 's/\|([0-9]+)//g')
# 将修改后的内容写回文件
echo "$new_content" > "$file"
}
# 要处理的目录
target_directory="/root/fix_md"
#
查找目标目录及其子目录下的所有.md 文件,并执行替换图像格式操作
find "$target_directory" -type f -name "*.md" | while read -r file; do
replace_image_format "$file"
done
```