Нахождение самого большого файла рекурсивно

SSH шифрует всю Вашу коммуникацию между клиентом и сервером. Таким образом, оба, пароль и pubkey автор совершенно безопасны по общедоступному прокси. Единственной вещью, которую необходимо проверить, является цифровой отпечаток сервера. OpenSSH сделает это для Вас после соединения с сервером однажды, просто убедиться получить корректный цифровой отпечаток при соединении первоначально.

BTW, это - по всей вероятности не нормальная практика, но ничто, чего необходимо бояться использовать общедоступный прокси для этого. Я иногда использую Скалистую вершину для этого.

41
29.09.2014, 23:53
4 ответа

Использование Найти (здесь предполагая GNU Найти ]) Чтобы выводить имена файлов с размером файла. Сортировать. распечатать самый большой.

find . -type f -printf "%s\t%p\n" | sort -n | tail -1

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


Использование цикла в Bash с реализацией GNU :

shopt -s globstar
max_s=0
for f in **; do
  if [[ -f "$f" && ! -L "$f" ]]; then
    size=$( stat -c %s -- "$f" )
    if (( size > max_s )); then
      max_s=$size
      max_f=$f
    fi
  fi
done
echo "$max_s $max_f"

Это будет значительно медленнее, чем решение. Это также предполагает, что имена файлов не заканчиваются символами Newline и пропустит скрытые файлы и не спускаются в скрытые каталоги.

Если есть файл называется - в текущем каталоге, размер файла открывается на stdin.

Остерегайтесь, что версии Bash до 4,3 следовали символические ссылки при спуске дерева каталогов.

57
27.01.2020, 19:35

Это работает в BSD/macOS:

find . -type f -ls | sort -k7 -r

Вы также можете добавить | head -n 3 для отображения количества интересных записей (в данном случае 3).

8
27.01.2020, 19:35

Эта команда также помогает перечислить определенный размер.

find. -type f -size +100M -exec ls -lh {} \;
11
27.01.2020, 19:35

В дополнение к ответу Stéphane Chazelas я хотел бы добавить следующие примечания (Я не могу комментировать):

  1. Чтобы получить наименьший обычный файл, используйте oвместоO:
ls -ld -- **/*(.DoL[1])
  1. Вы можете фильтровать по конкретному (или нескольким )расширениям, добавляя их к **/*подстановочному знаку:
ls -ld -- **/*.png(.DoL[1])
ls -ld -- **/*.{png, jpg}(.DoL[1]) # this will give two results, one per extension
0
09.02.2021, 12:18

Теги

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