파일 이름의 한 문자를 다른 문자로 바꾸는 방법

파일 이름의 한 문자를 다른 문자로 바꾸는 방법

?Debian 9 시스템에는 이름에 특정 문자가 포함된 파일이 많이 있는 하위 폴더가 있는 폴더가 있습니다 . 이름 을 바꾼 다음 -> ?로 변경하고 싶습니다 _.A?oranza.txtA_oranza.txt

나는 이 사이트에 있는 많은 명령을 시도했지만 성공하지 못했습니다.

답변1

귀하의 질문/답변/의견을 다시 읽어보신 후, 실제로 시도해 보시기 바랍니다 detox.

?왜냐하면 뒤에서 무슨 일이 일어나고 있는지 (콘솔 표현만) 파악하는 것은 꽤 지루할 수 있기 때문 입니다.

detox파일 이름을 쉽게 정리합니다.

답변2

다음 루프를 사용하여 ?모든 것을 바꿀 수 있습니다 _.

for i in *
do
    echo "$i" | grep -q '?' && mv "$i" "${i//\?/_}"
done

드디어 알아내고 테스트한 것 같아요. 제어 문자와 비ASCII 문자가 포함된 모든 파일을 추출했고 두 번째 루프에서는 비ASCII 문자를 _.

files=$(for i in *
        do
            echo "$i" | LANG="" sed -n '/[\x00-\x20]/p
                                        /[\x80-\xFF]/p'
        done)
for i in $files
do
    mv "$i" "$(echo "$i" | LANG="" sed 's/[\x00-\x20]/_/g
                                       s/[\x80-\xFF]/_/g')"
done

답변3

rsync를 통해 Windows 컴퓨터 백업을 재설정하는 올바른 방법을 찾다가 문제에 대한 새로운 해결책을 찾았습니다. @Kusalananda와 @HaukeLaging이 말한 곳처럼요? 실제로는 ?가 아니고 인쇄되지 않는 특수문자입니다. rsync매개변수를 사용하여 폴더의 복사본을 만들었고 결과 --iconv=iso-8859-1,utf8폴더의 이름에 올바른 기호나 특수 문자(예: ñ 또는 á)가 포함되어 있습니다.

detox또한 잘 작동했지만 rsync --iconv=iso-8859-1,utf8이제 올바른 파일 이름을 갖게 되었습니다. 답변을 게시한 모든 분들께 감사드립니다!

관련 정보