Que tal algo mais limpo 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
Estou tentando fazer o seguinte: listar arquivos ou diretórios contendo determinados caracteres e, a partir da última barra no caminho, procurar por caracteres específicos e substituí-los por um -
.
Eu construí o seguinte no regexpr, mas ele não faz nada com sed
:
find . -name "*[<>:\|?]*" | while read -r; do mv "${REPLY}" \
"'echo ${REPLY} | sed "s/([^/]+$)*([<>:\|?])/-/g"'"; done