2010-10-28 23:09:03 +0000 2010-10-28 23:09:03 +0000
241
241

Как найти файлы, которые больше или меньше x байт?

Как найти в терминале файлы, которые больше или меньше x байт?

Я полагаю, я могу сделать что-то вроде

find . -exec ls -l {} \;

, а затем передать результат в awk для фильтрации по размеру файла. Но не должен ли быть более простой способ, чем этот?

Ответы (4)

386
386
386
2010-10-28 23:37:50 +0000

Используйте:

find . -type f -size +4096c

для поиска файлов размером более 4096 байт.

для поиска файлов размером менее 4096 байт.

Обратите внимание на + и - разницу после переключателя размера.

Переключатель -size пояснил:

find . -type f -size -4096c
8
8
8
2015-10-25 22:03:31 +0000

Я думаю, что find может быть полезным в одиночку без трубопроводов к AWK. Например,

find ~ -type f -size +2k -exec ls -sh {} \;

Тильда указывает, с чего вы хотите начать поиск, и результат должен отображать только файлы размером более 2 килобайт.

Чтобы сделать это причудливым, вы можете использовать опцию -exec для выполнения другой команды, которая заключается в перечислении этих каталогов с их размерами.

Для получения дополнительной информации, прочтите man page for find .

5
5
5
2010-10-29 00:01:20 +0000

AWK действительно довольно легко для таких вещей. Вот некоторые вещи, которые вы можете сделать с ним в связи с проверкой размера файла, как вы просили:

Список файлов больше 200 байт:

ls -l | awk '{if ($5 > 200) print $8}'

Список файлов меньше 200 байт и записать список в файл:

ls -l | awk '{if ($5 < 200) print $8}' | tee -a filelog

Список файлов 0 байт, записать список в файл и удалить пустые файлы:

ls -l | awk '{if ($5 == 0) print $8}' | tee -a deletelog | xargs rm
3
3
3
2010-10-28 23:27:11 +0000

Больше 2000 байт:

du -a . | awk '$1*512 > 2000 {print $2}'

Менее 2000 байт:

du -a . | awk '$1*512 < 2000 {print $2} '

Похожие вопросы

10
37
7
14
11