이름에 캐리지 리턴이 포함된 폴더에서 파일 이동

이름에 캐리지 리턴이 포함된 폴더에서 파일 이동

몇 개의 폴더 이름을 바꾸도록 관리자로부터 쉘 스크립트를 받았지만 어떤 이유로 이제 폴더 이름에 캐리지 리턴이 있습니다(스크립트는 UAT에서 제대로 작동했지만 두 가지에 대해 잘 모르겠습니다. 환경 간의 차이점은 무엇입니까?) . ) 내 애플리케이션이 해당 항목을 찾을 수 없으면 폴더가 생성되므로 이제 병합해야 하는 파일이 포함된 두 개의 폴더가 있습니다.

따라서 testfolder\r 및 testfolder 폴더가 있는 경우 어떻게 해야 합니까?바르게파일 이름이 충돌하는 경우 올바른 폴더의 내용을 유지하면서 "CR" 폴더의 모든 파일을 올바른 폴더로 이동하려면 다음 명령을 작성하시겠습니까?

mv testfolder\r/* testfolder/ 

답변1

bash(또는 ksh 또는 zsh) 및 GNU mv를 사용하십시오.-n또는 --no-clobber옵션:

for file in testfolder$'\r'/*; do mv -n "$file" testfolder; done

이는 다음을 사용합니다.$' ... ' ANSI C 견적캐리지 리턴이 있는 폴더의 이름을 가져오면 남은 것은 파일을 이동(파괴하지 않음)하는 간단한 루프뿐입니다.

관련 정보