Как я могу отобразить все файлы размером более 10 Кбайт в моем текущем каталоге и его подкаталогах.
Пробовал ls -size +10k
, но это не сработало.
Как я могу отобразить все файлы размером более 10 Кбайт в моем текущем каталоге и его подкаталогах.
Пробовал ls -size +10k
, но это не сработало.
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
Попробуйте сделать это:
find . -size +10k -ls
И если вы хотите использовать двоичный ls
:
find . -size +10k -exec ls -l {} \;
Я понимаю, что назначение, скорее всего, продолжится. Для кого-либо еще:
Вы слишком смущаетесь.
find . -size +10k
Я добавлю к ответу @matchew (недостаточно комментариев для кармы):
find . -size +10k -type f -maxdepth 1 -exec ls -lh {} \; > myLogFile.txt
-type f: указать обычный тип файла
-maxdepth 1: убедитесь, что он только находит файлы в текущем каталоге
Вы можете использовать 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}'