다양한 유형의 파일이 많이 포함된 폴더가 있습니다..pdf,.jpg,.png,.사소한 말다툼등이지만 모두 확장자로 명명되었습니다..JPG. 원래 확장자로 이름을 바꾸려면 어떻게 해야 합니까? 즉PDF도착하다PDF,사소한 말다툼도착하다사소한 말다툼등.
다음을 통해 파일 형식을 찾을 수 있습니다.
file 99.jpg
99.jpg: PDF document, version 1.3
이 작업을 수행하는 데 사용할 수 있는 스크립트나 프로그램이 있습니까?
답변1
다음을 통해 찾은 MIME 유형을 사용할 수 있습니다 file
.
#! /usr/bin/env bash
for f in ./*.JPG; do
type=$(file -bi "$f")
type=${type%%;*}
base=${f%.*}
final=
case "$type" in
application/pdf) final="$base".pdf ;;
image/png) final="$base".png ;;
image/tiff) final="$base".tiff ;;
esac
if [ "$final" ]; then
printf '%s --> %s\n' "$f" "$final"
# mv -f "$f" "$final"
fi
done
case
필요한 경우 더 많은 유형을 추가할 수 있습니다(단, image/jpeg
JPEG 파일에 이미 올바른 확장자가 있으므로 생략됨). 변경 사항을 확인하고 mv
결과에 만족하면 해당 줄의 주석 처리를 제거하십시오.
답변2
빌드 명령아니요실행하세요.
mimetype
명령 문자열 목록을 생성한 다음 다음을 통해 조정하는 데 사용됩니다 .암소 비슷한 일종의 영양sed
~의바꾸다s
주문하다:cd ~/messed/up/folder/ # go where the files are... mimetype -M --output-format 'mv "%f" "%f%m"' *.JPG | sed 's#\.[^./"]*/\([^./]*"\)$#\.\1#'
일부 파일 확장자가 조금 너무 보이는 경우몸짓 광대극-ish, (예: 등 대신) 그런 다음
.jpeg
및 사이에.jpg
원하는 수의 명령을 추가합니다s
. 예를 들면 다음과 같습니다.sed '
s
sed 's/jpeg"$/jpg"/;s#\.[^./"]*/\([^./]*"\)$#\.\1#'
출력이 좋아지면 다음을 사용할 수 있습니다.암소 비슷한 일종의 영양
sed
~의 평가하다e
옵션. (e
마지막 항목 앞에 하나만 추가 하면 됩니다'
.) 전체 내용은 다음과 같습니다.cd ~/messed/up/folder/ # go where the files are... mimetype -M --output-format 'mv "%f" "%f%m"' *.JPG | sed 's/jpeg"$/jpg"/;s#\.[^./"]*/\([^./]*"\)$#\.\1#e' ls # show results