Ви можете використовувати identifyз imagemagick, а ви можете використовувати таку команду:
find . -iname "*.jpg" -type f -exec identify -format '%w %h %i' '{}' \; | awk '$1<300 || $2<300'
використання -exec <command> '{}' \;гарантує, що у вашому імені файлів можуть бути пробіли, або ви можете використовувати його
find . -iname "*.jpg" -type f | xargs -I{} identify -format '%w %h %i' {} | awk '$1<300 || $2<300'
де -I{}піклується про те саме.
Мені подобається те identify, що ви можете вказати вихідний формат; у цьому випадку, '%w %h %i'що дає ширину, висоту та повне ім'я зображення. Тоді awkвираз зберігає лише ті рядки, для яких зображення менше потрібного розміру.
Приклад виходу:
64 64 ./thumbsup.jpg
100 150 ./photomin.jpg
Edit: Якщо ви хочете , тільки імена файлів (для трубопроводів до rm, наприклад), просто змінити $lineв awkзаяві $3, то він буде друкувати тільки третій стовпець.
| awk '$1<300||$2<300'або| awk '$1<300||$2<300{print $3}'(коли потрібен лише 3-й стовпець).