Процедура чистки требует некоторой обязательной последова-
тельности действий:
- удалить все файлы в удаляемом каталоге командой rm;
- уд лить сам подкаталог с помощью команды rmdir.
Но существуют некоторые особенности выполнения этих действий:
- без ключей удаляется только один последний каталог в пути;
- действие удаления файлов и самого каталога требует наличия у пользователя прав записи (кода - w)в этот каталог;
- текущий каталог не должен принадлежать поддереву удаляе-
мых каталогов (т.е. невозможно удалить текущий каталог);
- если удаляемый файл защищен от записи, то команда rm
запрашивает подтверждение на удаление файла.
Назначение некоторых ключей:
- ключ -i команды rm вводит необходимость подтверждения
для каждого удаляемого файла;
- ключ -f команды rm отменяет необходимость подтверждения
для любого удаляемого файла;
- ключ -r задает режим рекурсивного удаления всех файлов
и подкаталогов данного каталога, а затем и самого каталога, но
лучше использовать ключ -i, иначе можно потерять все файлы.
Все три ключ команды rm могут использоваться в любых со-
четаниях. Например:
$ rm -ir /home/user/lev/dira
<Требует подтверждения на каждый удаляемый файл>
$
Тема 15. КОМАНДЫПОИСКА ФАЙЛОВ В СИСТЕМЕ КАТАЛОГОВ
позволяют обращаться к файлам по указываемым в командах свойствам файлов, т.е. по задаваемым условиям поиска
find <список_каталогов>< условия_поиска> -определение полных имен файлов в поддереве каталогов, удовлетворяющих заданным условиям поиска.
В команде может быть задано до 18 условий_поиска. Необхо-
димые комбинации условий объединяются в булевское выражение с помощью элементарных логических операций ('элементарных логических функций). Таким образом формируется логическая функция, принимающая истинное значение если значения всех её составляющих истины. На экран выводятся полные маршрутные имена файлов, свойства которых обеспечивают истинность этой функции.
|
! <условие> отрицание условия;
<пробел> соответствует операции "И";
-o операция "ИЛИ";
\(выражение \) булевское выражение в скобках.
При описании команды используются обозначения:
n положительное десятичное число;
-n любое положительное десятичное число, строго меньшее n;
+n любое положительное десятичное число, строго большее n.
Условия задаются следующими опциями:
-name'имя_файла' истинно для файлов с указанным именем.
-perm <8-ричный_код> истинно для файлов с указанным кодом прав доступа.
-type {f|d|b|c|p} истинно для файлов указанного типа.
-links n истинно для файлов с числом ссылок n.
-user <имя_пользователя> истинно для файлов, принадлежащих данному пользователю.
-size n[c] истинно для файлов с длиной n (число блоков) или с – в символах (байтах).
-exec <команда> {} \; истинно, если команда возвращает
нулевой код завершения (true), т.е. опция выполняет <команда> для каждого найденного файла.
Все аргументы команды find разделяются пробелами.
Пример 1.
$ find lev -type f -links +1
Выводятся на экран полные маршрутные имена всех обычных файлов головного каталога и его подкаталогов, на которые имеется более одной ссылки.
Поиск в корневом каталоге и во всех нижележащих с выводом листинга атрибутов каждого из найденных файлов:
|
$ find * -type d -links +3 -exec ls -al {} \;
где {} – “подстановка”, т.е. команда, указанная в скобках будет выполняться для каждого найденного файла, имя которых будет подставлено вместо фигурных скобок.
Пример 2.
$ find /dev \(-type b -o -type d \)
Выводятся имена каталогов или специальных файлов устройств
блок-ориентированного типа из каталога /dev и его подкаталогов.
Пример 3. Иллюстрирует форму выходной информации.
$ find * -type d <NewLine>
где * - поиск в текущем [.]и во всех нижележащих каталогах [*].
””””””””””””
.
./ira
./petr
./lev1/lev11
””””””””””””
$
Команду можно использовать для поиска файлов по их-имени или даже по части имени. Например
$find / “(-name “fil.*” –o –user petr –exec cat {} \;)”
Команда выводит на экран список файлов, имена которых включают указанные шаблоны. Некоторые версии UNIX требут заключения в кавычки специальных символов. В данном случае – () и *.
Все рассмотренные команды этой группы имеют инвариантное
применение для файлов всех типов, независимо от их назначения и
содержания.
grep [-ключи] 'шаблон' <список_файлов> -поиск в файлах из списка_файлов строк, содержащих указанный шаблон (подстрока символов).
Ключи определяют режимы поиска и вывода:
-c выводятся имена всех просмотренных файлов и количество
найденных строк, содержащих шаблон;
-n перед каждой строкой выводится ее относительный номер в
файле и сама строка;
-i игнорируются регистры;
-l выводятся только имена файлов, содержащие найденные
строки и др..
Примеры.
$ grep -c 'aaa' *
””””””””
f.1: 10
f.2: 3
f.3: 1
””””””””
|
В рассмотренном примере ыводятся все имена файлов текущего каталога, содержащих подстроку aaa и количество таких строк в каждом из них.
$ grep -l aaa *
”””
f.1
f.2
f.3
...
”””
$
В отличие от предыдущего случая, выводятся только имена
файлов, содержащих строки с шаблоном aaa.
$ grep -n bbb * <NewLine>
””””””””””””””””””””””””””””
f.1: 5: aaaaaabbbbaaacc
f.2: 2: bbbbbbbbbbbbbbbbbbbb
f.6: 1: bbb
””””””””””””””””””””””””””””
$
Команда имеет много опций и богата своими возможностями для самых разных применений.Например для поиска файлов или строк файлов по различным сочетаниям ключей (опций), с использованием регулярных выражений для описания условий поиска и т.д..
Тема 16. УПРАВЛЕНИЕ ФАЙЛАМИ