rm не читает имена файлов со входа. Вероятно, вы можете:
find . -iname "*.jpg" -type f -exec bash -c 'for i; do size=($(identify -format "%w %h" "$i")); (( size[1] < 300 || size[2] < 300 )) && rm -v "$i"' remove-files {} +
Вместо xargs вы можете использовать -exec. Команда bash:
for i
do
size=($(identify -format "%w %h" "$i"))
(( size[1] < 300 || size[2] < 300 )) && rm -v "$i"
done
Вы можете использовать -exec вместо xargs. получает размер и сохраняет его в массиве ( поэтому вокруг $() есть круглые скобки: ($(identify -format "%w %h" "$i")) использует арифметику оболочки (( )) для сравнения