다양한 유형의 파일이 많이 들어 있는 폴더가 있습니다..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