Я пытаюсь сделать следующее: перечислить файлы или каталоги, содержащие определенные символы, затем из последней косой черты в пути найти конкретные символы и заменить их на - .

Я построил следующее на regexpr, но он ничего не делает с sed:

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

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .