Подтвердить что ты не робот

Список файлов по определенному размеру в текущем каталоге и во всех подкаталогах

Как я могу отобразить все файлы размером более 10 Кбайт в моем текущем каталоге и его подкаталогах.

Пробовал ls -size +10k, но это не сработало.

4b9b3361

Ответ 1

find . -size +10k -exec ls -lh {} \+

первая часть этого идентична ответу @sputnicks и sucesffully находит все файлы в каталоге более 10k (не путайте k с K), мое добавление, вторая часть затем выполняет ls -lh или ls, которые перечислены (-l) файлы с помощью удобочитаемого размера (-h). отрицайте h, если хотите. конечно, {} является самим файлом, а \+ является просто альтернативой \;

который на практике \; повторяется или:

ls -l found.file; ls -l found.file.2; ls -l found.file.3

где \+ отображает его как один оператор или:

ls -l found.file found.file.2 found.file.3

больше на \; vs + с find

Дополнительно, вам может потребоваться список, упорядоченный по размеру. Это относительно легко выполнить. Я бы использовал параметр -s для ls, поэтому ls -ls, а затем передайте его на sort -n для сортировки по цифре

который станет следующим:

find . -size +10k -exec ls -ls {} \+ | sort -n

или в обратном порядке добавьте -r:

find . -size +10k -exec ls -ls {} \+ | sort -nr

наконец, ваш заголовок говорит, что найти самый большой файл в каталоге. Вы можете сделать это, переведя код до tail

find . -size +10k -exec ls -ls {} \+ | sort -n | tail -1 найдет вам самый большой файл в каталоге и его подкаталогах.

Заметьте, что вы также можете сортировать файлы по размеру с помощью -S и отрицать необходимость сортировки. но чтобы найти самый большой файл, который вам нужен, чтобы использовать голову,

find . -size +10k -exec ls -lS {} \+ | head -1

преимущество при использовании -S, а не sort - одно, вам не нужно вводить sort -n и два, вы также можете использовать -h параметр для чтения человеком. который является одним из моих любимых в использовании, но недоступен со старыми версиями ls, например, у нас есть старый сервер centOs 4 на работе, у которого нет -h

Ответ 2

Попробуйте сделать это:

find . -size +10k -ls

И если вы хотите использовать двоичный ls:

find . -size +10k -exec ls -l {} \;

Ответ 3

Я понимаю, что назначение, скорее всего, продолжится. Для кого-либо еще:

Вы слишком смущаетесь.

find . -size +10k

Ответ 4

Я добавлю к ответу @matchew (недостаточно комментариев для кармы):

find . -size +10k -type f -maxdepth 1 -exec ls -lh {} \; > myLogFile.txt

-type f: указать обычный тип файла

-maxdepth 1: убедитесь, что он только находит файлы в текущем каталоге

Ответ 5

Вы можете использовать ls:

ls -lR | egrep -v '^d' | awk '$5>10240{print}'

Пояснение:

ls -lR         # list recursivly
egrep -v '^d'  # only print lines which do not start with a 'd'. (files)

печатать только строки, где пятый столбец (размер) больше 10240 байт:

awk '$5>10240{print}'