
접미사 없이 다양한 파일이 포함된 폴더(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