5

Я хочу отфильтровать вывод команды ls по размеру файла. Любые файлы .jpg или .png размером более 100 КБ должны указываться в выходных данных.

Мне удалось отфильтровать файлы .png / .jpg, но я не могу удалить файлы размером менее 100 КБ.

Вот что я сейчас использую:

ls -lah | grep '.png\|.jpg'

Есть идеи, как я могу это сделать?

4 ответа4

4

Вы можете сделать это используя find:

find . -type f -size +100k | grep '.png\|.jpg'

Где +100k указывает размер в килобайтах, что означает, что должны выводиться только файлы большего размера, чем это. find также есть несколько других приятных опций, например, выводить список только тех файлов, которые были созданы некоторое время назад. Смотрите man find для более подробной информации.

Вышесказанное также может быть переписано как

find . -type f -size +100k -name "*.png" -o -name "*.jpg"
3

Используйте find вместо ls:

find . -type f -size +100k \( -name \*.png -or -name \*.jpg \)
2

Как предлагали другие, find позволит вам находить файлы в указанных диапазонах размеров. Find выходы просто путь к каждому файлу, хотя. Также, без дополнительной квалификации, find найдет все файлы в текущем каталоге и в каждом каталоге ниже текущего каталога. Следующее выполняет поиск только в текущем каталоге и использует ls для отображения результатов.

find . -maxdepth 1 -size +200 \( -name \*.png -o -name \*.jpg \) -print | xargs ls -ldh

Обратите внимание, что размер в блоках, где блок часто, если не всегда, 512 байт.

0

Используя du

du -a --apparent-size -t +100k | grep '.png\|.jpg'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .