.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
できない文字を含むファイルでは機能しない可能性があるため、お勧めしたくありません)。これはPerlで実装されました。find -exec ls
find -exec stat
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