我正在尝试执行以下操作:列出包含特定字符的文件或目录,然后从路径中的最后一个斜杠开始搜索特定字符并将其替换为-
。
我在 regexpr 上构建了以下内容但它没有任何作用sed
:
find . -name "*[<>:\\|?]*" | while read -r; do mv "${REPLY}" \
"`echo ${REPLY} | sed "s/([^/]+$)*([<>:\\|?])/-/g"`"; done
答案1
那么更干净一点的怎么样:
find ... |
while read -r f; do
dir=$(dirname "$f")
old_name=$(basename "$f")
new_name=$(echo "$old_name" | tr '<>:\\|?' '-')
mv "$dir/$old_name" "$dir/$new_name"
done