Настройка и работа в Linux



              

Поиск в Unix Часть 2 - часть 4


Давайте попробуем еще чему-нибудь научиться используя ключ «-ls». Ранее для того что бы узнать сколько файлов подходит под определенный поисковый запрос, мы использовали перенаправление вывода в команду wc -l. Воспользуемся этим для подсчета количества подкаталогов в моем домашнем каталоге: find . -type d -print | wc -l 256

На самом деле он содержит только 255 подкаталогов, так как первый результат поиска – сам родительский каталог. Теперь попробуем побольше выяснить о структуре этих каталогов, используя следующую конструкцию: find . -type d -ls | awk '{print $4 - 2, $NF}' | sort -rn | head 37 . 26 ./.kde/share/apps/kio_http/cache 18 ./.kde/share/apps 15 ./.gimp-1.2 9 ./tmp/tst 9 ./.kde/share 8 ./tmp/tst/h 8 ./tmp/tst/g 8 ./tmp/tst/f 8 ./tmp/tst/e

Великолепно! Мы видим, что в моем домашнем каталоге «.» – 37 подкаталогов, а в каталоге «./.kde/share/apps/kio_http/cache» – 26 и так далее. Теперь разберемся как работает эта команда. Для начала я воспользовался ключом «-ls», который дает нам полную информацию о каждом найденном каталоге. Эта информация передается утилите awk, которая используется для извлечения данных из определенных полей. Вспомните, что результатом работы ключа «-ls» является список, состоящий из следующих полей: номер inode, количество блоков, права, количество ссылок и т.п. Я запрограммировал awk, так что бы он брал информацию из четвертого столбца (который содержит количество ссылок и в awk обозначается $4) и вычел из него двойку (так как меня не интересуют каталоги «.» и «..»). Еще мне необходимо название каждого каталога и поскольку оно содержится в самом последнем столбце, я воспользовался переменной $NF для получения этой информации. Поместив эти инструкции в фигурные скобки «{}», я запрограммировал awk на выполнение этих действий с каждой строкой данных, поступающих от команды find. В свою очередь, результат выполнения команды awk передается в команду sort. Используя ключи «-rn», я задаю обратный порядок сортировки (от большего к меньшему), для того что бы увидеть, какие каталоги содержат больше подкаталогов. Так как я не хочу смотреть на весь получившийся результат, я пользуюсь командой head, передавая ей результат работы команды sort, в результате чего получаю лишь первые десять строк этого результата.

Следующий ключ, на котором мы остановимся – «-perm». Если мы хотим найти все файлы, которые имеют права доступа «777», что означает доступ на чтение, запись и выполнение для всех, то нам следует воспользоваться командой: find . -perm 777 -print




Содержание  Назад  Вперед