Все, что вам нужно, это
du -msh /*
, он покажет, какой каталог, а затем будет следовать наибольшему размеру, например:
du -msh /var/*
, затем
du -msh /var/www/*
и так далее ..
Причина может быть любой, от загрузки некоторых файлов пользователями, если они у вас есть для регистрации файлов, вызванных какой-либо ошибкой и т. д.
Именно для этого и предназначен cat
. Если вы хотите отобразить содержимое всех файлов в вашем каталоге, используйте
cat *
Оболочка расширит *
до списка файлов.
Если вы хотите включить в список и скрытые файлы, используйте
cat * .*
или
shopt -s dotglob; cat *
Однако, если вы просто хотите быстро определить файл, это может быть не лучшей идеей, особенно если файлы длинные.
В этом случае может помочь использование head
:
head *
отобразит первые десять строк каждого файла в каталоге с заголовком, в котором будет указано имя файла.
См. « Почему *not* parse `ls`?», чтобы понять, почему анализ вывода ls
может быть не лучшим подходом.
Для вашего скрипта:
#!/bin/sh
dir="$1"
PAGER="${PAGER:-cat}"
test -d "$dir" || exit 1
find "$dir" -type f -exec "$PAGER" {} \;
Это возьмет первый аргумент командной строки и назначит его переменной dir
. Переменная PAGER
будет установлена на cat
, если пользователь еще не установил для нее другое значение.
Если данный каталог является допустимым именем каталога, find
используется для передачи всех обычных файлов (включая скрытые обычные файлы) в каталоге или любом из его подкаталогов на пейджер.
Чтобы ограничить поиск файлов только первым уровнем данного каталога, вставьте -maxdepth 1
перед параметром -exec
, чтобы find
.
Использование:
cat
все файлы в /tmp
:
$ ./script /tmp
Посмотреть первые 10 строк всех файлов в вашем домашнем каталоге:
$ PAGER=head ./script "$HOME"
Прочитать все истории в вашем каталоге ~/stories
:
$ PAGER=less ./script "$HOME/stories"
Расширение:
#!/bin/sh
dir="$1"
suf="$2"
PAGER="${PAGER:-cat}"
test -d "$dir" || exit 1
find "$dir" -type f -name "*$suf" -exec "$PAGER" {} \;
Это позволит сценарию использовать дополнительный суффикс имени файла, например
$ ./script /tmp .txt