누구파일이 존재하는지 여부에 따라 디렉토리의 파일을 정렬하고 싶습니다.사진(카메라) 및 디자인 그래픽. 존재하다스택 오버플로, 더 오래된 것이 있습니다솔루션/개념 증명이미지의 색상 범위를 비교합니다. 거의 그대로 복사했습니다: 1
체크카툰.sh:
#!/bin/sh
IMAGE=$1
COLORS=$(convert $IMAGE -format %c histogram:info:- | wc -l)
WIDTH=$(identify $IMAGE | sed -r "s/.* ([0-9]+)x[0-9]+ .*/\1/")
HEIGHT=$(identify $IMAGE | sed -r 's/.* [0-9]+x([0-9]+) .*/\1/')
RATIO=$(echo $WIDTH $HEIGHT $COLORS | awk '{ print ($1 * $2)/$3;}')
echo $RATIO | awk '{ printf "%020.5f",$1 }'
모두 선택.쉿:
#!/bin/sh
FILES=$(ls)
for FILE in $FILES; do
IsIMAGE=$(identify $FILE 2>&1 | grep " no decode delegate " | grep -o "no")
if [ "$IsIMAGE" = "no" ]; then continue; fi
IsIMAGE=$(identify $FILE 2>&1 | grep " Improper image header " | grep -o "Improper")
if [ "$IsIMAGE" = "Improper" ]; then continue; fi
echo $(CheckCartoon.sh $FILE) $FILE
done
일반적인 출력:
00000000000002.16959 Burne_Jones_The_Doom_Fulfilled_1884_85.jpg
00000000047480.70000 Dürer-Hieronymus-im-Gehäus.jpg
00000000000016.03440 IMG_00000138.jpg
00000000000015.67780 IMG_00000143.jpg
00000000000014.37140 IMG_00000144.jpg
00000000000015.05500 IMG_00000145.jpg
00000000000011.79040 M2-GrandTurk1.jpg
00000000000013.05840 Real-01.jpg
나는 이 솔루션이 단점에도 불구하고 흥미롭다고 생각합니다. 이를 탐구하고 싶습니다.
- 스크립트를 추가하는 것은 아이디어를 보여주기 위한 것일 뿐이므로 모범 사례로 업데이트하고 더욱 안전하고 강력하게 만드세요.
- 이를 기반으로 파일을 복사하기 위해 두 개의 디렉토리를 생성하게 하십시오. 임계점이는 스크립트에서 설정되거나 런타임 시 매개변수로 설정됩니다. 일반적으로 값이 매우 낮다는 것은 카메라 사진과 유사한 것을 의미해야 합니다(또는 적어도 색상 범위가 제한된 그래픽은 아님). 따라서 임계값을 50으로 설정하면 하나의 이미지를 제외한 모든 이미지가 그림디렉토리, 동안뒤러한 사람이 갈 거예요제도법.
이것을 시도하는 것에 대한 조언을 듣고 싶습니다.
1. SO의 답변은 편집자의 백틱 실수로 인해 어려움을 겪습니다. 그리고 굵은 글씨도 있나요? 블록 중 하나 내의 마커. 물론 모든 사람이 그것을 알아내고 싶어하지만 초보자는 그렇지 않을 수도 있습니다.
답변1
사용하시면 mkdir -p
이미 존재하는 디렉토리에 대한 불만은 없으므로 상단에 다음을 입력하세요 CheckAll.sh
.
mkdir -p graphics pictures
이 줄은 echo $(CheckCartoon.sh $FILE) $FILE
계산 결과와 파일 이름만 표시하므로 더 많은 작업을 수행해야 하므로 다음으로 바꾸십시오.
# store value
result=$(CheckCartoon.sh $FILE)
# do a string compare
if [[ $result < "00000000000050." ]]
then
echo move "$FILE" to graphics $result
mv "$FILE" graphics
else
echo move "$FILE" to pictures $result
mv "$FILE" pictures
fi
견고성에 관해서는 처음부터 쉘 스크립트를 사용해서는 안 됩니다. 그러나 최소한 추가 검사를 수행하여 $result
스크립트가 유효한 값을 반환하는지 확인할 수 있습니다.