매직 파일을 사용하여 파일 유형을 감지하고 그에 따라 파일 접미사의 이름을 바꿉니다.

매직 파일을 사용하여 파일 유형을 감지하고 그에 따라 파일 접미사의 이름을 바꿉니다.

접미사 없이 다양한 파일이 포함된 폴더(iPhone 백업)가 있습니다.

각 파일의 파일 형식을 감지하는 일괄 처리 프로세스를 이러한 파일에 대해 실행하고 싶습니다(매직 파일 데이터베이스(/usr/공유/기타/매직또는남자 파일), 그에 따라 파일 접미사(데이터베이스 파일/mime 유형<->접미사)를 자동으로 변경하거나 이름을 바꿉니다.

관련 키워드 "file", "magic", "rename" 등의 일반적인 특성으로 인해 몇 시간 동안 인터넷 검색 및 StackExchange-Searching 결과를 얻지 못했습니다. 도움을 주셔서 감사합니다!

답변1

유형<-> 접미사 DB는 어떤 모양인가요? file의 결과를 해석하는 것은 그리 간단한 일이 아닙니다 . 나는 단지 다음과 같이 가정할 것입니다: * 파일이 인쇄하는 첫 번째 단어로 충분합니다. * 이 단어는 각 줄에 다음이 포함된 파일의 키입니다. 그리고 값은 우리가 원하는 접미사입니다.

Bash의 경우 파일 형식을 인수로 사용하고 접미사를 에코하는 함수를 작성합니다.

MISTERIOUSFILEMIMETYPETOSUFFIXDB=/path/to/key/value/file

typetosuffix () {
    grep -E "^\s*$1:" ${MISTERIOUSFILEMIMETYPETOSUFFIXDB}| cut -d : -f 2
}

그 기능으로 당신은 할 수 있습니다

for f in $(find /path/to/iphone/backup -type -f)
do
    FILEWITHOUTSUFFIX = basename $f
    [ ${FILEWITHOUTSUFFIX} = ${FILEWITHOUTSUFFIX%.*} ] && continue #the file has a suffix after all
    TYPE=$(file $f | cut -f 2) #put type determining magic here
    SUFFIXITSSUPPOSEDTOHAVE=$(typetosuffix $TYPE) #fetch suffix from DB
    mv $f $f$SUFFIXITSSUPPOSEDTOHAVE #rename the file
done

관련 정보