O padrão corresponde a certos caracteres após a última barra

0

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
    
por Bethelik 17.10.2016 / 16:57

1 resposta

1

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
    
por 17.10.2016 / 17:26