Подключение к одной из папок всей файловой системы, расположенной где-то на другом устройстве

Обновлено: 21.11.2024

Часть операционной системы, отвечающая за управление файлами и каталогами, называется файловой системой. Он организует наши данные в файлы, которые содержат информацию, и каталоги (также называемые «папками»), в которых хранятся файлы или другие каталоги.

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

Здесь ответ компьютера: /Users/nelle , домашний каталог Нелли:

Вариант домашнего каталога

Путь к домашнему каталогу будет выглядеть по-разному в разных операционных системах. В Linux он может выглядеть как /home/nelle, а в Windows — как C:\Documents and Settings\nelle или C:\Users\nelle. (Обратите внимание, что он может немного отличаться для разных версий Windows.) В будущих примерах мы использовали выходные данные Mac по умолчанию — выходные данные Linux и Windows могут немного отличаться, но в целом должны быть похожими.

Мы также предполагается, что ваша команда pwd возвращает домашний каталог вашего пользователя. Если pwd возвращает что-то другое, вам может понадобиться перейти туда с помощью cd, иначе некоторые команды в этом уроке не будут работать так, как написано. Дополнительные сведения о команде cd см. в разделе Изучение других каталогов.

Чтобы понять, что такое «домашний каталог», давайте посмотрим, как организована файловая система в целом. Ради этого примера мы проиллюстрируем файловую систему на компьютере нашего ученого Нелле. После этой иллюстрации вы будете изучать команды для исследования вашей собственной файловой системы, которая будет построена аналогичным образом, но не будет полностью идентичной.

На компьютере Нелле файловая система выглядит так:

Сверху находится корневой каталог, в котором хранится все остальное. Мы обращаемся к нему, используя символ косой черты, / , сам по себе; этот символ является первой косой чертой в /Users/nelle .

Внутри этого каталога есть несколько других каталогов: bin (где хранятся некоторые встроенные программы), data (для различных файлов данных), Users (где расположены личные каталоги пользователей), tmp (для временных файлов, которые не нужно хранить в течение длительного времени) и т. д.

Мы знаем, что наш текущий рабочий каталог /Users/nelle хранится внутри /Users, потому что /Users — это первая часть его имени. Точно так же мы знаем, что /Users хранится в корневом каталоге /, потому что его имя начинается с / .

Слеши

Обратите внимание, что у символа / есть два значения. Когда он появляется перед именем файла или каталога, он относится к корневому каталогу. Когда он появляется внутри пути, это просто разделитель.

В разделе /Users мы находим по одному каталогу для каждого пользователя с учетной записью на компьютере Нелл, ее коллег imhotep и larry.

Файлы пользователя imhotep хранятся в /Users/imhotep , файлы пользователя larry — в /Users/larry , а файлы Nelle — в /Users/nelle . Поскольку Nelle является пользователем в наших примерах, мы получаем /Users/nelle в качестве нашего домашнего каталога. Как правило, когда вы открываете новую командную строку, для запуска вы оказываетесь в своем домашнем каталоге.

Теперь давайте изучим команду, которая позволит нам увидеть содержимое нашей собственной файловой системы. Мы можем увидеть, что находится в нашем домашнем каталоге, запустив ls :

(Опять же, ваши результаты могут немного отличаться в зависимости от вашей операционной системы и того, как вы настроили свою файловую систему.)

  • знак / указывает, что это каталог
  • @ означает ссылку
  • * указывает на исполняемый файл

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

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

Очистка терминала

Если ваш экран слишком загроможден, вы можете очистить свой терминал с помощью команды очистки. Вы по-прежнему можете получить доступ к предыдущим командам, используя ↑ и ↓ для перемещения построчно или прокручивая в своем терминале.

Получение помощи

ls имеет много других опций. Существует два распространенных способа узнать, как использовать команду и какие параметры она принимает. В зависимости от вашей среды вы можете обнаружить, что работает только один из этих способов:

    Мы можем передать команде параметр --help (недоступно в macOS), например:

Далее мы опишем оба способа.

Опция --help

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

Неподдерживаемые параметры командной строки

Если вы попытаетесь использовать неподдерживаемый параметр, ls и другие команды обычно выводят сообщение об ошибке, подобное следующему:

Команда man

Еще один способ узнать о ls — ввести

Эта команда превратит ваш терминал в страницу с описанием команды ls и ее параметров.

Чтобы перемещаться по справочным страницам, вы можете использовать ↑ и ↓ для перемещения построчно или использовать клавишу B и пробел, чтобы пропустить вверх и вниз целую страницу. Для поиска символа или слова на справочных страницах используйте /, за которым следует символ или слово, которое вы ищете. Иногда поиск приводит к нескольким совпадениям. Если это так, вы можете перемещаться между ударами, используя N (для перемещения вперед) и Shift + N (для перемещения назад).

Чтобы выйти из справочных страниц, нажмите Q .

Руководства в Интернете

Конечно, есть и третий способ доступа к справке по командам: поиск в Интернете через веб-браузер. При использовании поиска в Интернете включение фразы unix man page в ваш поисковый запрос поможет найти релевантные результаты.

GNU предоставляет ссылки на свои руководства, включая основные утилиты GNU, которые охватывают многие команды, представленные в этом уроке.

Дополнительные сведения о флагах ls

Вы также можете использовать два параметра одновременно. Что делает команда ls при использовании с параметром -l? А если вы используете как параметр -l, так и параметр -h?

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

Решение

Опция -l заставляет ls использовать формат длинного списка, показывающий не только имена файлов/каталогов, но и дополнительную информацию, такую ​​как размер файла и время его последней модификации. Если вы используете как параметр -h, так и параметр -l, это делает размер файла «удобочитаемым», т. е. отображает что-то вроде 5,3 КБ вместо 5369 .

Список в обратном хронологическом порядке

По умолчанию ls перечисляет содержимое каталога в алфавитном порядке по имени. Команда ls -t перечисляет элементы по времени последнего изменения, а не по алфавиту. Команда ls -r выводит содержимое каталога в обратном порядке. Какой файл отображается последним при объединении параметров -t и -r? Подсказка: вам может понадобиться использовать параметр -l, чтобы увидеть даты последнего изменения.

Решение

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

Изучение других каталогов

Мы можем использовать ls не только для текущего рабочего каталога, но и для просмотра содержимого другого каталога. Давайте посмотрим на наш каталог Desktop, запустив ls -F Desktop, то есть команду ls с опцией -F и аргументом Desktop. Аргумент Desktop сообщает ls, что нам нужен список чего-то другого, кроме нашего текущего рабочего каталога:

Обратите внимание: если каталог с именем Desktop не существует в вашем текущем рабочем каталоге, эта команда вернет ошибку. Как правило, каталог Desktop существует в вашем домашнем каталоге, который, как мы предполагаем, является текущим рабочим каталогом вашей оболочки bash.

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

Как вы теперь видите, использование оболочки bash сильно зависит от представления о том, что ваши файлы организованы в иерархической файловой системе. Такая иерархическая организация помогает нам отслеживать нашу работу: можно поместить сотни файлов в наш домашний каталог, так же как можно сложить сотни печатных изданий на нашем столе, но это обречена на провал.

Теперь, когда мы знаем, что каталог shell-lesson-data находится в каталоге нашего рабочего стола, мы можем сделать две вещи.

Во-первых, мы можем просмотреть его содержимое, используя ту же стратегию, что и раньше, передав имя каталога в ls :

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

Команда для изменения местоположения — это cd, за которой следует имя каталога, чтобы изменить наш рабочий каталог. cd означает «изменить каталог», что немного вводит в заблуждение: команда не изменяет каталог; это изменяет представление оболочки о том, в каком каталоге мы находимся. Команда cd похожа на двойной щелчок по папке в графическом интерфейсе, чтобы попасть в папку.

Эти команды переместят нас из нашего домашнего каталога в каталог Desktop, затем в каталог shell-lesson-data, а затем в каталог с данными упражнений. Вы заметите, что cd ничего не печатает. Это нормально.Многие команды оболочки ничего не выводят на экран при успешном выполнении. Но если мы запустим после него pwd, то увидим, что теперь находимся в /Users/nelle/Desktop/shell-lesson-data/exercise-data.

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

Однако есть одна загвоздка. Как и в случае с любым новым инструментом, вы должны изучить оболочку, прежде чем сможете делать с ней что-то полезное.

В этой статье сравнивается навигация по рабочему столу компьютера без рабочего стола. То есть в этой статье показано, как использовать терминал для перемещения и просмотра вашего компьютера, как если бы вы были на рабочем столе, но вместо этого с терминала.

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

Просмотреть списки файлов

Чтобы просмотреть список файлов на вашем компьютере или устройстве, вы обычно открываете приложение для управления файлами, которое называется Explorer (Windows), Finder (Mac), Nautilus (GNOME), Amaze (Android) или что-то еще.

Команда ls (list) выводит список всех файлов в текущем каталоге.

Команда pwd (распечатать рабочий каталог) сообщает, в каком каталоге вы сейчас находитесь. Оттуда команда ls (list) показывает, что находится в этом (или любом другом) каталоге:

Первыми элементами в списке являются точки. Одна точка — это мета-местоположение, означающее папку, в которой вы сейчас находитесь.

Двойная точка означает, что вы можете вернуться из этого места. То есть вы находитесь в папке внутри другой папки. Как только вы начнете перемещаться по компьютеру, вы сможете использовать эту информацию для справки.

Вы также можете заметить, что трудно отличить файл от папки. В некоторых дистрибутивах Linux предварительно запрограммированы цвета: папки — синие, файлы — белые, бинарные файлы — зеленые и т. д. Если вы не видите эти цвета, вы можете использовать ls --color, чтобы попытаться активировать эту функцию. Однако цвета не всегда передаются через удаленные соединения на удаленные серверы, поэтому общий и универсальный способ прояснить, что такое файлы и что такое папки, — переключатель --classify ( -F ):

Папки заканчиваются косой чертой ( / ), чтобы обозначить, что они являются каталогами. Двоичные объекты, такие как ZIP-файлы и исполняемые программы, обозначаются звездочкой ( * ). Обычные текстовые файлы перечислены без дополнительных обозначений.

Если вы привыкли к команде dir в Windows, вы можете использовать ее и в Linux. Он работает точно так же, как ls .

Открыть папку

Дважды щелкните папку. Когда он откроется, вы окажетесь «в» этой папке.

Команда cd (изменить каталог) открывает папку и делает ее новым текущим рабочим каталогом.

Чтобы открыть или войти в папку в командной строке, используйте команду cd (изменить каталог) следующим образом:

Закрыть папку

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

Вы не столько закрываете папку в командной строке, сколько оставляете ее.

На рабочем столе вы судите о своем текущем местоположении по тому, какое окно у вас открыто. Например, когда вы открываете окно и щелкаете значок папки «Документы», вы думаете, что находитесь в папке «Документы».

В терминале наиболее близким к этой концепции является приглашение оболочки. В большинстве оболочек ваше приглашение представляет собой знак доллара ( $ ), и его расположение в компьютере может меняться в зависимости от того, куда вы указываете своему терминалу перейти.Вы всегда можете узнать свое текущее местоположение с помощью команды pwd (напечатать рабочий каталог):

Если вы оказались в одном месте из-за использования команды cd, вы можете "закрыть" это место, вернувшись в свой домашний каталог. Этот каталог в большей или меньшей степени является рабочим столом вашего терминала — это место, на которое вы смотрите, когда впервые открываете терминал.

Команда для возврата домой — это команда cd без указания местоположения (сокращение от cd ~ ):

Навигация по каталогам

Откройте окно, дважды щелкните папку, а затем дважды щелкните вложенную папку. Используйте кнопку «Назад», чтобы вернуться назад.

Команда cd (изменить каталог) перемещает вас в другой каталог. Чтобы выйти из этого каталога, используйте cd вместе с путем к другому местоположению, или используйте двойные точки, чтобы вернуться назад, или вернитесь домой, чтобы перейти оттуда.

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

Представьте, что ваш компьютер — это Интернет (или, что более уместно, Интернет — это компьютер). Если вы начинаете в своей домашней папке, то все ваши личные файлы могут быть выражены с использованием вашего дома в качестве отправной точки. Думайте о своей домашней папке как о домене URL-адреса в Интернете. Вместо URL используется термин путь к каталогу или путь к файлу. Вот несколько примеров путей:

  • /home/seth/bin
  • /home/seth/despacer.sh
  • /home/seth/documentation.zip*
  • /home/seth/люди

Поскольку вы часто возвращаетесь домой, ваш домашний каталог можно обозначить как ~ . Например:

  • ~/bin
  • ~/despacer.sh
  • ~/documentation.zip*
  • ~/люди

Чтобы перейти непосредственно к папке people, используйте команду cd вместе с полным путем к каталогу:

Предположим, что в папке "люди" есть каталоги "разработчики" и "маркетинг" .

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

Один из вариантов – перейти в другой каталог, в котором вы сейчас находитесь. Этот метод использует точку в качестве отправной точки.

Вы можете перемещаться по всем своим каталогам таким образом: сменить каталог на одну папку, просмотреть ее содержимое, а затем перейти к следующему и так далее. Однако, если вы знаете путь, куда хотите попасть, вы можете мгновенно переместиться туда одной командой. Мгновенный доступ к каталогу to /home/seth/people/developers из любого места, мгновенно:

Оказавшись в каталоге, у вас всегда есть возможность вернуться из текущего местоположения, используя мета-местоположение .., чтобы сообщить cd, что нужно перейти вверх на одну папку:

Вы можете продолжать использовать этот прием до тех пор, пока вам некуда будет деваться:

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

Поскольку пользователи часто возвращаются домой, большинство оболочек настроено на возврат домой, если вы введете cd без пункта назначения:

Абсолютные пути

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

Когда вы продвинетесь до конца пути к файлу, вы попадете в корневой каталог, обозначенный косой чертой ( / ). Вы видите корневой каталог в начале всех абсолютных путей:

  • /дом/сет
  • /etc/apache2/apache.conf
  • /var/www/htdocs

В случае сомнений вы можете всегда использовать абсолютный путь к любому местоположению:

Чтобы найти, куда вы хотите перейти, используйте команду ls, чтобы "открыть" каталог и заглянуть внутрь:

Заключение

Попробуйте перемещаться по системе с помощью терминала. Пока вы ограничиваетесь командами cd , ls и pwd , вы не можете причинить никакого вреда, и практика поможет вам освоиться в этом процессе. В большинстве систем клавиша Tab автоматически дополняет пути к файлам по мере ввода, поэтому, если вы переходите на ~/people/marketing , все, что вам нужно ввести, это cd ~/people/m , а затем нажать Tab. Если Tab не может завершить путь, вы знаете, что у вас либо неправильный путь, либо есть несколько каталогов с похожими именами, поэтому ваша оболочка не может выбрать, какой из них использовать для автозаполнения.

Навигация в терминале требует практики, но это намного быстрее, чем открывать и закрывать окна и нажимать кнопки «Назад» и значки папок, особенно если вы уже знаете, куда хотите перейти.Попробуйте!

Когда вы увидите, что Загрузка завершена, ваши файлы успешно загружены и доступны в любом браузере или на любом устройстве, на котором установлен Диск.

На вашем компьютере

При перетаскивании файлов в папку на Диске Google для компьютеров они автоматически загружаются на Диск в Интернете (хотя для синхронизации файлов может потребоваться некоторое время). Подробнее см. в разделе Перемещение файлов в папки.

  • Файлы с синхронизацией еще не загружены на Диск.
  • Файлы с пометкой "Готово" успешно загружены, и к ним можно получить доступ с Диска в любом браузере или с любого устройства, на котором установлен Диск.

Доступ к файлам с любого устройства

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

Доступ к файлам в автономном режиме

Отключения Интернета и длительные перелеты не должны мешать вам работать на Диске.

Настройте автономный доступ, чтобы в следующий раз, когда у вас не будет доступа в Интернет, вы могли просматривать свои документы, перемещать папки в случайном порядке и редактировать файлы, хранящиеся на Диске.

Важно! Чтобы другие люди не могли видеть ваши файлы, настройте офлайн-доступ только на принадлежащих вам устройствах.

В Интернете

Только браузеры Chrome и Microsoft Edge

Настройте автономный доступ к Документам, Таблицам и Презентациям:

  1. Установите расширение Google Docs Offline.
  2. На Диске нажмите Настройки.
  3. В разделе "Офлайн" установите флажок "Создавать, открывать и редактировать последние файлы Google Документов, Таблиц и Презентации на этом устройстве в автономном режиме".
  4. Нажмите "Готово".
  5. Нажмите файл правой кнопкой мыши и включите параметр "Доступно в автономном режиме".

Чтобы узнать, как получить доступ к файлам в автономном режиме с компьютера или мобильного устройства, см. статью Доступ к сохраненным файлам на Диске без Интернета.

На вашем компьютере

Настройте автономный доступ к файлам PDF, файлам Microsoft Office и другим файлам на рабочем столе:

  1. Нажмите Диск для ПК. Откройте Google Диск.
  2. Щелкните правой кнопкой мыши файл или папку, к которым вы хотите получить доступ в автономном режиме.
  3. Нажмите "Файловый поток Диска" доступен в автономном режиме.


Google, Google Workspace и связанные с ними знаки и логотипы являются товарными знаками Google LLC. Все остальные названия компаний и продуктов являются товарными знаками компаний, с которыми они связаны.

Одна из проблем, с которой сталкиваются пользователи, впервые изучающие работу с Linux, – поиск нужных файлов.

В этом руководстве рассказывается, как использовать команду find с подходящим названием. Это поможет вам искать файлы в вашей системе, используя различные фильтры и параметры. Также будет кратко рассмотрена команда locate, которую можно использовать для поиска файлов другим способом.

Предпосылки

Чтобы следовать этому руководству, вам потребуется доступ к компьютеру с операционной системой на базе Linux. Это может быть либо виртуальный частный сервер, к которому вы подключились с помощью SSH, либо ваша локальная машина. Обратите внимание, что это руководство было проверено с использованием сервера Linux с Ubuntu 20.04, но приведенные примеры должны работать на компьютере с любой версией любого дистрибутива Linux.

Если вы планируете использовать удаленный сервер, чтобы следовать этому руководству, мы рекомендуем вам сначала выполнить наше руководство по начальной настройке сервера. Это создаст безопасную серверную среду, включая пользователя без полномочий root с привилегиями sudo и брандмауэр, настроенный с помощью UFW, которые вы сможете использовать для развития своих навыков работы с Linux.

Кроме того, вы можете использовать интерактивный терминал, встроенный в эту страницу, чтобы поэкспериментировать с примерами команд из этого руководства. Щелкните следующее Запустить интерактивный терминал! кнопку, чтобы открыть окно терминала и начать работу в среде Linux (Ubuntu).

Запустите интерактивный терминал!

Примечание. Чтобы проиллюстрировать, как работают команды find и locate, приведенные в этом руководстве примеры команд выполняют поиск файлов, хранящихся в папке / или в корневом каталоге. Из-за этого, если вы вошли в терминал как пользователь без полномочий root, некоторые из примеров команд могут содержать в своем выводе Отказ в доступе.

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

Поиск по имени

Самый очевидный способ поиска файлов — по имени.

Чтобы найти файл по имени с помощью команды find, используйте следующий синтаксис:

Это будет чувствительно к регистру, то есть поиск по запросу отличается от поиска по запросу .

Чтобы найти файл по имени, но игнорировать регистр запроса, используйте параметр -iname:

Если вы хотите найти все файлы, которые не соответствуют определенному шаблону, вы можете инвертировать поиск, указав -not :

Кроме того, вы можете инвертировать поиск, используя восклицательный знак ( ! ), например:

Обратите внимание, что если вы используете !, вы должны экранировать символ обратной косой чертой ( \ ), чтобы оболочка не пыталась интерпретировать его до того, как find сможет действовать.

Поиск по типу

Вы можете указать тип файлов, которые хотите найти, с помощью параметра -type. Это работает следующим образом:

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

  • f : обычный файл
  • d : каталог
  • l : символическая ссылка
  • c : символьные устройства
  • b : заблокировать устройства

Например, если вы хотите найти все символьные устройства в вашей системе, вы можете ввести следующую команду:

Эта команда ищет только устройства в каталоге /dev, в котором обычно монтируются файлы устройств в системах Linux:

Вы можете найти все файлы, оканчивающиеся на .conf, с помощью следующей команды. В этом примере выполняется поиск соответствующих файлов в каталоге /usr:

Примечание. В предыдущем примере объединены два выражения запроса поиска; а именно, -type f и -name "*.conf" . Чтобы любой файл был возвращен, он должен удовлетворять обоим этим выражениям.

Вы можете комбинировать подобные выражения, разделяя их параметром -and, но, как показано в этом примере, -and подразумевается каждый раз, когда вы включаете два выражения. Вы также можете вернуть результаты, удовлетворяющие любому выражению, разделив их опцией -or:

В этом примере будут найдены все файлы, имена которых соответствуют запросу query_1 или query_2 .

Фильтрация по времени и размеру

find предоставляет множество способов фильтрации результатов по размеру и времени.

Вы можете фильтровать файлы по их размеру, используя параметр -size. Для этого вы должны добавить специальный суффикс в конце числового значения размера, чтобы указать, рассчитываете ли вы размер в байтах, мегабайтах, гигабайтах или другом размере. Вот некоторые часто используемые суффиксы размера:

  • c : байты
  • k : килобайты
  • M : мегабайты
  • G : гигабайты
  • b : блоки по 512 байт.

Для иллюстрации следующая команда найдет все файлы в каталоге /usr размером ровно 50 байт:

Чтобы найти файлы размером менее 50 байт, можно использовать следующий синтаксис:

Чтобы найти в каталоге /usr файлы размером более 700 мегабайт, можно использовать следующую команду:

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

Время доступа: время последнего чтения или записи файла.

Время модификации: время последнего изменения содержимого файла.

Время изменения: время последнего изменения метаданных индексного дескриптора файла.

Вы можете основывать свои поисковые запросы на этих параметрах, используя параметры -atime , -mtime и -ctime соответственно. Для любого из этих параметров вы должны указать значение, указывающее, сколько дней в прошлом вы хотите выполнить поиск. Как и в случае с параметрами размера, описанными ранее, перед этими параметрами можно поставить символы плюс или минус, чтобы указать «больше» или «меньше».

Например, чтобы найти файлы в каталоге /usr, которые были изменены за последний день, выполните следующую команду:

Если вам нужны файлы, к которым обращались менее суток назад, вы можете запустить эту команду:

Чтобы найти файлы, метаинформация которых была изменена более 3 дней назад, можно выполнить следующее:

У этих параметров также есть сопутствующие параметры, которые можно использовать для указания минут вместо дней:

Это даст файлы, которые были изменены за последнюю минуту.

find также может выполнять сравнение с эталонным файлом и возвращать более новые файлы:

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

Поиск по владельцу и разрешениям

Вы также можете искать файлы по пользователю или группе, которой принадлежит файл, используя параметры -user и -group соответственно. Чтобы найти все файлы в каталоге /var, принадлежащие пользователю syslog, выполните следующую команду:

Аналогичным образом вы можете указать файлы в каталоге /etc, принадлежащие теневой группе, набрав:

Вы также можете искать файлы с определенными разрешениями.

Если вы хотите сопоставить точный набор разрешений, вы можете использовать этот синтаксис, указав разрешения с помощью восьмеричной записи:

Это будет соответствовать файлам с точно указанными разрешениями.

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

Это будет соответствовать любым файлам, имеющим дополнительные разрешения. В этом случае будет найден файл с правами доступа 744.

Фильтрация по глубине

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

Если вы следуете примерам из этого руководства, было бы разумно создать эти файлы и каталоги в каталоге /tmp/. /tmp/ — это временный каталог, что означает, что любые файлы и каталоги в нем будут удалены при следующей загрузке сервера. Это будет полезно для целей данного руководства, поскольку вы можете создать столько каталогов, файлов и ссылок, сколько захотите, не беспокоясь о том, что они впоследствии засорят вашу систему.

После выполнения команд в этом разделе ваш каталог /tmp/ будет содержать три уровня каталогов с десятью каталогами на первом уровне. Каждый каталог (включая временный каталог) будет содержать десять файлов и десять подкаталогов.

Создайте примерную структуру каталогов в каталоге /tmp/ с помощью следующей команды:

После этого заполните эти каталоги несколькими образцами файлов с помощью команды touch:

Установив эти файлы и каталоги, перейдите в только что созданный каталог test/:

Чтобы получить общее представление о том, как find будет извлекать файлы из этой структуры, начните с обычного поиска по имени, который соответствует любому файлу с именем file1 :

Это вернет много результатов. Если вы направите вывод в счетчик, вы обнаружите, что всего 1111 результатов:

Возможно, это слишком много результатов, чтобы быть полезными для вас в большинстве случаев. Чтобы сузить его, вы можете указать максимальную глубину поиска в каталоге поиска верхнего уровня:

Чтобы найти файл1 только в каталогах уровня 1 и выше, вы можете указать максимальную глубину 2 (1 для каталога верхнего уровня и 1 для каталогов уровня 1):

Это гораздо более управляемый список.

Вы также можете указать минимальный каталог, если знаете, что все файлы существуют после определенного момента в текущем каталоге:

Вы можете использовать это, чтобы найти только файлы в конце ветвей каталога:

Опять же, из-за разветвленной структуры каталогов будет возвращено большое количество результатов (1000).

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

Такое сочетание этих параметров значительно сужает результаты: возвращается только 110 строк вместо прежних 1 000.

Выполнение команд по результатам поиска

Вы можете выполнить произвольную вспомогательную команду для всего, что находит совпадения, используя параметр -exec, используя следующий синтаксис:

Кнопка <> используется в качестве заполнителя для файлов, которые находят совпадения. \; позволяет найти, где заканчивается команда.

Например, предположив, что вы все еще находитесь в каталоге test/, который вы создали в каталоге /tmp/ на предыдущем шаге, вы можете найти файлы в предыдущем разделе, у которых были разрешения 644, и изменить их, чтобы они имели разрешения 664:

Вы также можете изменить права доступа к каталогу аналогичным образом:

В этом примере выполняется поиск всех каталогов с разрешениями, установленными на 755, а затем изменяются разрешения на 700 .

Поиск файлов с помощью locate

Альтернативой использованию find является команда locate. Эта команда часто выполняется быстрее и может с легкостью выполнять поиск по всей файловой системе.

Вы можете установить эту команду в Debian или Ubuntu с помощью apt, обновив списки пакетов и затем установив пакет mlocate:

В Rocky Linux, CentOS и других дистрибутивах, производных от RedHat, вы можете вместо этого использовать команду dnf для установки mlocate:

Причина, по которой locate работает быстрее, чем find, заключается в том, что он опирается на базу данных, в которой перечислены все файлы в файловой системе. Эта база данных обычно обновляется один раз в день с помощью cron-скрипта, но вы можете обновить ее вручную с помощью команды updatedb. Запустите эту команду сейчас с привилегиями sudo:

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

locate позволяет фильтровать результаты несколькими способами. Самый простой способ использовать его для поиска файлов — использовать следующий синтаксис:

Это будет соответствовать любым файлам и каталогам, которые содержат строковый запрос в любом месте их пути к файлу. Чтобы возвращать только файлы, имена которых содержат сам запрос, вместо каждого файла, содержащего запрос в каталогах, ведущих к нему, вы можете включить флаг -b для поиска только тех файлов, чье «базовое имя» соответствует запросу:

Чтобы функция locate возвращала только те результаты, которые все еще существуют в файловой системе (имеются в виду файлы, которые не были удалены между последним вызовом updateb и текущим вызовом locate), используйте флаг -e:

Вы можете получить статистику по каталогизированной информации locate с помощью параметра -S:

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

Заключение

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

С этого момента мы рекомендуем вам продолжать экспериментировать с поиском и размещением . Вы можете прочитать их соответствующие справочные страницы, чтобы узнать о других параметрах, не описанных в этом руководстве, и вы можете анализировать результаты поиска и управлять ими, перенаправляя их в другие команды, такие как wc , sort и grep .

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.

Читайте также: