
이전 버전의 Mac OS에서 확장자가 없는 파일이 10,000개 이상 있습니다. 그것들은 파일 구조에 극도로 중첩되어 있으며 온갖 종류의 이상한 형식과 문자도 가지고 있습니다. 더 이상 파일 형식이나 작성자 코드가 첨부되어 있지 않습니다. 이러한 파일 중 다수에는 확장자를 결정할 수 있는 텍스트가 파일에 포함되어 있습니다(예를 들어 Word.Document.8은 해당 Word 버전에서 생성된 모든 파일의 텍스트에 있습니다).
한 번에 이러한 파일 형식 중 하나에 대해 작동할 것처럼 보이는 스크립트를 찾았지만, 파일 이름의 일부를 사악한 문자 다음에 삭제하므로 이는 좋지 않습니다.
find . -type f -not -name "*.*" -print0 |\
xargs -0 file |\
grep 'Word.Document.8' |\
sed 's/:.*//' |\
xargs -I % echo mv % %.doc
먼저 파일 이름의 문자를 정리해야 합니까, 아니면 동일하게 유지하기 위해 스크립트의 문자를 프로그래밍 방식으로 처리해야 합니까? 파일 이름에서 정보를 잃지 않는 한 슬래시 및 기타 문제 문자를 정리하는 데 문제가 발생하지 않습니다. 또한 파일 이름을 정리하면 중복될 가능성이 높으므로 모든 정리 스크립트는 손실되지 않도록 확장자 앞에 "-1"과 같은 것을 추가해야 합니다.
나는 이 대본에 얽매이지 않지만 이해할 수 있습니다. 이는 프로입니다. Mac OS X 10.6이 이 파일 서버에 설치되어 있지만 최신 버전의 OS X에 액세스할 수 있습니다.
답변1
아직 질문을 100% 이해하지는 못하지만 몇 가지 생각을 해보겠습니다.
sed 's/:.*//'
콜론이 있는 파일 이름은 모두 엉망이 됩니다. 콜론은 Mac에서 유효한 파일 이름 문자입니까? 그렇지 않다면 이것은 당신에게 문제가 되지 않을 것입니다. 그렇지 않으면sed 's/: Word.Document.8$//'
또는을 수행하는 것을 고려하십시오.sed 's/: [^:]*$//'
.mv
에서 생성된 명령 에xargs
문제가 있는 것 같습니다. 노력하다
xargs -I % sh -c 'echo mv "%" "%.doc"'
.
답변2
두 번째 질문은 동시에 두 개 이상의 파일 형식을 찾고 각각에 적절한 확장자를 제공하도록 스크립트를 어떻게 변경합니까?
시작하는 데 도움이 되는 몇 가지 힌트는 다음과 같습니다.
sed -e '/Word\.Document\.8/s/무엇/다른 것/;에스/또 다른/또 다른/' \ -e '/Excel\.Sheet\.8/s/뭔가 2/다른 것 2/;에스/또 다른 2/또 다른 2/' \ ...
또는
어이쿠' /워드\.문서\.8/ { Word용 awk 명령 } /Excel\.Sheet\.8/ { Excel용 awk 명령 } ⋮ '