Как я могу отобразить все файлы размером более 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}'