Отображение всех файлов из каталога с помощью cat одновременно

Все, что вам нужно, это

du -msh /*

, он покажет, какой каталог, а затем будет следовать наибольшему размеру, например:

du -msh /var/*

, затем

du -msh /var/www/*

и так далее ..

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

1
04.04.2017, 20:06
2 ответа

Именно для этого и предназначен cat. Если вы хотите отобразить содержимое всех файлов в вашем каталоге, используйте

cat *

Оболочка расширит * до списка файлов. Если вы хотите включить в список и скрытые файлы, используйте

cat * .*

или

shopt -s dotglob; cat *

Однако, если вы просто хотите быстро определить файл, это может быть не лучшей идеей, особенно если файлы длинные.

В этом случае может помочь использование head:

head *

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

5
27.01.2020, 23:16

См. « Почему *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
0
27.01.2020, 23:16

Теги

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