<Предыдущая | Содержание: | Следующая>
Возвращение на игровую площадку
Пора ставить найдите для некоторого (почти) практического использования. Мы создадим игровую площадку и попробуем кое-что из того, что узнали.
Во-первых, давайте создадим игровую площадку с множеством подкаталогов и файлов:
[я @ linuxbox ~] $ mkdir -p игровая площадка / каталог- {001..100}
[я @ linuxbox ~] $ коснитесь игровая площадка / каталог- {001..100} / файл- {A..Z}
[я @ linuxbox ~] $ mkdir -p игровая площадка / каталог- {001..100}
[я @ linuxbox ~] $ коснитесь игровая площадка / каталог- {001..100} / файл- {A..Z}
Поразитесь мощи командной строки! С помощью этих двух строк мы создали каталог для игровой площадки, содержащий 100 подкаталогов, каждый из которых содержит 26 пустых файлов. Попробуйте это с графическим интерфейсом!
Метод, который мы использовали для выполнения этой магии, включал знакомую команду (MkDir), экзотическое расширение оболочки (фигурные скобки) и новую команду, трогать, Объединяя MkDir с -p вариант (который вызывает MkDir для создания родительских каталогов указанных путей) с раскрытием фигурных скобок мы смогли создать 100 подкаталогов.
Ассоциация трогать Команда обычно используется для установки или обновления времени доступа, изменения и модификации файлов. Однако, если аргумент имени файла является аргументом несуществующего файла, создается пустой файл.
На нашей игровой площадке мы создали 100 экземпляров файла с именем файл-A. Найдем их:
[я @ linuxbox ~] $ найти игровую площадку -type f -name 'file-A'
[я @ linuxbox ~] $ найти игровую площадку -type f -name 'file-A'
Обратите внимание, что в отличие от ls, найдите не дает результатов в отсортированном порядке. Его порядок определяется компоновкой запоминающего устройства. Мы можем подтвердить, что у нас действительно есть 100 экземпляров файла:
[я @ linuxbox ~] $ найти игровую площадку -типа f -name 'file-A' | туалет -l
100
[я @ linuxbox ~] $ найти игровую площадку -типа f -name 'file-A' | туалет -l
100
Затем давайте посмотрим, как найти файлы по времени их модификации. Это будет полезно при создании резервных копий или организации файлов в хронологическом порядке. Для этого мы сначала создадим эталонный файл, с которым мы будем сравнивать время модификации:
[я @ linuxbox ~] $ сенсорная площадка / отметка времени
[я @ linuxbox ~] $ сенсорная площадка / отметка времени
Это создает пустой файл с именем отметка времени и устанавливает время его модификации на текущее время. Мы можем проверить это с помощью другой удобной команды, состояние, который является своего рода усиленной версией ls, состояние команда показывает все, что понимает система
о файле и его атрибутах:
[я @ linuxbox ~] $ статистика игровая площадка / отметка времени
Файл: `игровая площадка / отметка времени '
Размер: 0 Блоки: 0 Блок ввода-вывода: 4096 обычных пустых файлов Устройство: 803h / 2051d Inode: 14265061 Ссылки: 1
Доступ: (0644 / -rw-r - r--) Uid: (1001 / me) Gid: (1001 / me) Доступ: 2016-10-08 15: 15: 39.000000000 -0400
Modify: 2016-10-08 15:15:39.000000000 -0400
Change: 2016-10-08 15:15:39.000000000 -0400
[я @ linuxbox ~] $ статистика игровая площадка / отметка времени
Файл: `игровая площадка / отметка времени '
Размер: 0 Блоки: 0 Блок ввода-вывода: 4096 обычных пустых файлов Устройство: 803h / 2051d Inode: 14265061 Ссылки: 1
Доступ: (0644 / -rw-r - r--) Uid: (1001 / me) Gid: (1001 / me) Доступ: 2016-10-08 15: 15: 39.000000000 -0400
Modify: 2016-10-08 15:15:39.000000000 -0400
Change: 2016-10-08 15:15:39.000000000 -0400
Если мы трогать файл еще раз, а затем изучите его с помощью состояние, мы увидим, что время файла было обновлено .:
[я @ linuxbox ~] $ сенсорная площадка / отметка времени
[я @ linuxbox ~] $ статистика игровая площадка / отметка времени
Файл: `игровая площадка / отметка времени '
Размер: 0 Блоки: 0 Блок ввода-вывода: 4096 обычных пустых файлов Устройство: 803h / 2051d Inode: 14265061 Ссылки: 1
Доступ: (0644 / -rw-r - r--) Uid: (1001 / me) Gid: (1001 / me) Доступ: 2016-10-08 15: 23: 33.000000000 -0400
Modify: 2016-10-08 15:23:33.000000000 -0400
Change: 2016-10-08 15:23:33.000000000 -0400
[я @ linuxbox ~] $ сенсорная площадка / отметка времени
[я @ linuxbox ~] $ статистика игровая площадка / отметка времени
Файл: `игровая площадка / отметка времени '
Размер: 0 Блоки: 0 Блок ввода-вывода: 4096 обычных пустых файлов Устройство: 803h / 2051d Inode: 14265061 Ссылки: 1
Доступ: (0644 / -rw-r - r--) Uid: (1001 / me) Gid: (1001 / me) Доступ: 2016-10-08 15: 23: 33.000000000 -0400
Modify: 2016-10-08 15:23:33.000000000 -0400
Change: 2016-10-08 15:23:33.000000000 -0400
Далее воспользуемся найдите чтобы обновить некоторые файлы нашей игровой площадки:
[я @ linuxbox ~] $ найти игровую площадку -type f -name 'file-B' -exec touch '{}' ';'
[я @ linuxbox ~] $ найти игровую площадку -type f -name 'file-B' -exec touch '{}' ';'
Это обновит все файлы на игровой площадке с именем файл-B. Далее мы будем использовать найдите для идентификации обновленных файлов путем сравнения всех файлов с эталонным файлом отметка времени:
[я @ linuxbox ~] $ найти игровую площадку -тип f -новую игровую площадку / метку времени
[я @ linuxbox ~] $ найти игровую площадку -тип f -новую игровую площадку / метку времени
Результаты содержат все 100 экземпляров файл-B. Поскольку мы провели трогать во всех файлах на игровой площадке с именем файл-B после того, как мы обновили отметка времени, теперь они «новее», чем отметка времени и, таким образом, можно отождествить с -новее тест.
Наконец, давайте вернемся к тесту плохих разрешений, который мы выполнили ранее, и применим его к
[я @ linuxbox ~] $ найдите игровую площадку \ (-type f -not -perm 0600 \) -or \ (
-тип d-not -perm 0700 \)
[я @ linuxbox ~] $ найдите игровую площадку \ (-type f -not -perm 0600 \) -or \ (
-тип d-not -perm 0700 \)
Эта команда выводит список всех 100 каталогов и 2600 файлов в детская площадка (так же как отметка времени и детская площадка (всего 2702), потому что ни один из них не соответствует нашему определению «хороших разрешений». Зная операторы и действия, мы можем добавить к этой команде действия, чтобы применить новые разрешения к файлам и каталогам на нашей игровой площадке:
[я @ linuxbox ~] $ найти игровую площадку \ (-type f -not -perm 0600 -exec chmod 0600 '{}' ';' \) -or \ (-type d -not -perm 0700 -exec chmod 0700 '{}' ';' \)
[я @ linuxbox ~] $ найти игровую площадку \ (-type f -not -perm 0600 -exec chmod 0600 '{}' ';' \) -or \ (-type d -not -perm 0700 -exec chmod 0700 '{}' ';' \)
В повседневной жизни нам может быть проще выполнить две команды, одну для каталогов и одну для файлов, чем эту одну большую составную команду, но приятно знать, что мы можем сделать это так. способ. Здесь важно понять, как операторы и действия могут использоваться вместе для выполнения полезных задач.