El patrón coincide con ciertos caracteres después de la última barra

El patrón coincide con ciertos caracteres después de la última barra

Estoy tratando de hacer lo siguiente: enumerar archivos o directorios que contienen ciertos caracteres y luego, desde la última barra diagonal en la ruta, buscar caracteres particulares y reemplazarlos con un archivo -.

Construí lo siguiente en regexpr pero no hace nada con sed:

find . -name "*[<>:\\|?]*" | while read -r; do mv "${REPLY}" \
"`echo ${REPLY} | sed "s/([^/]+$)*([<>:\\|?])/-/g"`"; done

Respuesta1

¿Qué tal algo más limpio como:

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

información relacionada