패턴은 마지막 슬래시 뒤의 특정 문자와 일치합니다.

패턴은 마지막 슬래시 뒤의 특정 문자와 일치합니다.

다음 작업을 수행하려고 합니다. 특정 문자가 포함된 파일이나 디렉터리를 나열한 다음 경로의 마지막 슬래시에서 특정 문자를 검색하고 -.

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

관련 정보