複数のイメージを含む特定のディスクのすべてのフォルダのリストを返す方法はありますか?
検索は再帰的でなければなりませんが、Xはそうではありません。
X = 100の例:
Folder A
|_ folder A1 (containing 100 pictures)
|_ folder A2 (containing 50 pictures)
|_ 50 pictures
「フォルダA1」のみを返す必要があります。
答え1
私はすべての写真が.png
andで終わると仮定します。X=100
find ./ -type d -exec sh -c 'count=$(ls "${0}"/*.png | wc -l); if [ "${count}" -ge 100 ];then echo "${0}"; fi ' {} \;
編集する
以下のようにextensions
ファイルの数や値に関係なく拡張できます。X
export files='png jpg gif'
export X='100'
find ./ -type d -exec \
sh -c 'count=$(for i in ${files}; do ls "${0}"/*.${i};done | wc -l); \
if [ "${count}" -ge "${X}" ];then echo "${0}"; fi ' {} \;
答え2
各イメージについて、そのイメージがあるディレクトリの名前を印刷します。
find \( -name \*.png -or -name \*.gif -or -name \*.jpg \) -printf '%h\n' |
uniqはソートされた入力を必要としますが、find
ファイルをランダムに印刷します。 (私のテストではfind -depth
役に立ちませんでした。理由を尋ねないでください。)
sort |
各ディレクトリ名について発生頻度を教えてください。
uniq -c |
最後に、目的の行をフィルタリングします。
while read count dir; do
if [ "$count" -ge 100 ]; then echo "$count $dir"; fi
done