.PNG 파일이 포함된 깊은 디렉터리 트리가 있습니다. 디렉터리에서 모든 .PNG 파일을 찾아 가장 작은 크기에서 가장 큰 크기로 정렬한 다음 50번째 이미지마다 표시하고 싶습니다.
(저는 데이터를 분석하고 "잠재적으로 유용함"과 "무작위 노이즈" 사이의 최적 크기 구분을 찾으려고 노력하고 있으므로 이 수천 개의 이미지를 쉽게 탐색할 수 있는 방법을 원합니다...)
모든 스크립트 도움을 주시면 감사하겠습니다. Find를 사용하여 크기별로 검색하는 방법은 알고 있지만 결과를 정렬하거나 프로세스를 기다리는 동안 일시 중지하지 않고 50번마다 표시하도록 표시 프로그램을 실행하는 방법은 모릅니다.
그런데 저는 MacOS Snow Leopard를 사용하고 있습니다.
감사해요!
답변1
그 크기는 파일 크기인가요, 아니면 이미지 크기인가요?
.png
zsh에서 현재 디렉터리와 해당 하위 디렉터리의 모든 파일을 파일 크기 증가순으로 정렬하여 보려면 다음을 수행하세요 .
echo **/*.png(oL)
모든 N개 파일을 가져오는 편리한 전역 한정자는 없습니다. 다음 루프는 배열이 $a
50개의 파일마다 포함되도록 설정합니다(가장 큰 파일부터 시작).
a=() i=0
for x in **/*.png(OL); do
((i%50)) || a+=$x
((++i))
done
my-favorite-image-viewer $a
find
zsh 또는 GNU find가 없으면 출력을 메타데이터별로 쉽게 정렬할 수 있는 방법이 없습니다 ( find -ls
또는 가 find -exec ls
있지만 find -exec stat
인쇄할 수 없는 문자가 포함된 파일에서는 작동하지 않을 수 있으므로 추천하고 싶지 않습니다). 이는 Perl로 구현되었습니다.
find . -name '*.png' |
perl -e '
$, = "\n"; # separate elements by newlines in the output
print # print…
sort {-s $a <=> -s $b} # …sorted by file size…
map {chomp;$_} <> #…the input lines (with the newline bitten off)
'
50개의 파일을 모두 보는 방법은 다음과 같습니다(가장 큰 파일부터 시작).
find . -name '*.png' |
perl -e '
$, = "\n";
exec "my-favorite-image-viewer",
map {$i++ % 50 ? () : $_} # every 50
sort {-s $b <=> -s $a} map {chomp;$_} <>
'
또 다른 접근 방식은 단일 디렉터리에 파일 크기별로 이름이 정렬된 기호 링크를 만드는 것입니다. zsh에서:
mkdir tmp && cd tmp
i=1000000 # the extra 1 on the left ensures alignment
for x in ../**/*(oL); do
((++i))
ln -s $x ${i#1}.png
done
펄 사용:
mkdir tmp && cd tmp
find .. -name '*.png' |
perl -e '
$, = "\n";
for $x (sort {-s $a <=> -s $b} map {chomp;$_} <>) {
symlink $x, sprintf("%06d", ++$i);
}
'
답변2
파일 크기 find
검색 또는 가져오기, 파일 크기별 정렬 및 50줄마다 인쇄를 결합하면 됩니다 .*.png
ls
stat
sort
awk
답변3
GNU 도구가 없거나 파일 이름에 특수 문자가 많이 포함된 경우 다음 중 하나를 사용합니다.Gilles의 탁월한 솔루션.
그러나 여기에는 GNU, 및 find
- 기본적으로 도구 세트를 사용하는 sort
솔루션이 있습니다.cut
awk
알렉스가 제안한다:
$ find -iname "*.png" -exec ls -s {} + | sort -n | cut -d" " --complement -f1 | awk '{ if ( NR % 50 == 0 ) print}' | xargs -d"\n" eog
여기서 나는 사용했다노움 눈( eog
) 이미지 뷰어로서, 주로 여러 명령줄 인수를 허용하고 이를 통해 의미 있는 작업을 수행하는 몇 안 되는 이미지 뷰어 중 하나이기 때문입니다.
사람들이 더 많은 코드를 제거 sort
하고 지원할 수 있다고 확신합니다 . 솔직히 말해서 이 솔루션이 공백과 어떻게 상호 작용할지는 잘 모르겠습니다.cut
awk