
Я пытаюсь сделать следующее: составить список файлов или каталогов, содержащих определенные символы, а затем, начиная с последнего слеша в пути, выполнить поиск определенных символов и заменить их на -
.
Я построил следующее на основе 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