Ви можете використовувати 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-й стовпець).