模式匹配最後一個斜杠後的某些字符

模式匹配最後一個斜杠後的某些字符

我正在嘗試執行以下操作:列出包含某些字符的文件或目錄,然後從路徑中的最後一個斜杠搜索特定字符並將其替換為-.

我在 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

相關內容