특수 문자가있는 파일과 디렉토리의 이름을 바꾸는 스크립트를 찾고 있습니다. 내 파일들:
?rip?ev <- Directory
- Juhendid ?rip?evaks.doc <- Document
- ?rip?ev 2 <- Subdirectory
-- t?ts?.xml <- Subdirectory file
다음과 같아야합니다.
ripev <- Directory
- Juhendid ripevaks.doc <- Document
- ripev 2 <- Subdirectory
-- tts.xml <- Subdirectory file
예를 들어 .doc 및 .xml이 손실되지 않도록 파일 형식이 그대로 유지되도록 파일과 폴더를 변경해야합니다. 마지막으로 이름을 바꾸면 모든 파일 유형이 손실되고 파일이이 경우 "rip"ev 디렉토리와 하위 디렉토리가 비어있는 경우 어머니 디렉토리로 이동했습니다. 모든 것은 어머니 디렉토리 / home / samba / 아래에 있습니다 .
따라서이 경우 파일 이름과 디렉토리 이름에서 물음표의 이름을 바꾸고 다른 곳으로 옮기거나 다른 문자 나 파일 형식을 잃지 않도록해야합니다. 나는 대답을 찾기 위해 구글을 둘러 보았지만 하나도 찾지 못했다. 찾기 및 이름 바꾸기로 수행 할 수 있다는 것을 알고 있지만 스크립트의 복잡성을 극복 할 수 없었습니다. 누구든지 제발 도와 줄 수 있습니까?
당신은 이렇게 할 수 있습니다
find -name '*\?*' -exec bash -c 'echo mv -iv "$0" "${0//\?/}"' {} \;
mv 이전 의 에코 를 확인하여 실제로 변경하기 전에 무엇을하는지 확인할 수 있습니다. 그렇지 않으면 위 :
?
이름을 검색합니다 ( ?
의 단일 문자 버전과 동일 *
하므로 이스케이프해야 함).{}
첫 번째 인수로 전달하는 bash 명령을 실행합니다 ( $0
대신 스크립트 이름이 없기 때문에 $1
).${0//\?/}
에서 수행 매개 변수 확장 bash는 모든 항목 교체 ?
아무것도를.또한 파일 유형은 Linux의 이름에 의존하지 않지만 ?
.
또한 심볼릭 링크가 포함 된 경우 이름도 변경됩니다 ?
(질문에서 예상 한 것인지 여부는 명확하지 않음).
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다