Hostwinds Учебники

Результаты поиска для:


Содержание


Перечисление файлов
найти
найти
ls
ГНОМ
Поиск по имени
найти
найти
ГНОМ
Поиск по размеру
дюйт
найти
найти
ГНОМ
Поиск пустых файлов
найти
найти
ГНОМ
Выполнение действий в файле соответствует
найти
найти
ГНОМ
Рафинирование поисков с помощью команды GREP
Вывод

Как найти файлы на Ubuntu с терминалом

Теги: Cloud Servers,  Dedicated Server 

Перечисление файлов
найти
найти
ls
ГНОМ
Поиск по имени
найти
найти
ГНОМ
Поиск по размеру
дюйт
найти
найти
ГНОМ
Поиск пустых файлов
найти
найти
ГНОМ
Выполнение действий в файле соответствует
найти
найти
ГНОМ
Рафинирование поисков с помощью команды GREP
Вывод

В этом уроке мы рассмотрим ряд методов поиска файлов и каталогов (то есть папков) в Ubuntu 20.04 LT, такие как поиск всех файлов с .старый Расширение или поиск всех файлов и каталогов, превышающих 2 ГБ.Мы также рассмотрим, как запустить одну или несколько команд в каждом найденном файле.

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

sudo apt install mlocate

Поскольку все в UNIX-подобных операционных системах, включая Ubuntu, считается файлом, термин «файл» также будет указывать «каталог», если не вызов.Кроме того, примеры настольной среды основаны на ГНОМАнкетЧтобы узнать, как получить доступ к вашему удаленному компьютеру Ubuntu с помощью GNOME, см. Использование удаленного рабочего стола Windows с Ubuntu 20.04 TLS.

С этим давайте начнем.

Перечисление файлов

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

найти

Неуборчивый найти Команда рекурсивно перечисляет все файлы из текущего каталога:

find

найти

В найти Команда похожа на найти но требует рисунка (символ подстановочного знака в этом случае):

locate *


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

locate -e *

ls

Используя рекурсивные опция позволяет стандарту ls команда для получения аналогичных результатов:

ls -Rlha

ГНОМ

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

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

В следующих примерах мы будем искать все файлы с .старый расширение.

найти

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

sudo find / -iname *.old


Обратите внимание, что -Iname вариант игнорировать случай, тогда как -имя не.

найти

Далее, опция игнорирует случай:

sudo locate -i *.old


Интересно, что даже с вариант найти Команда не находит /run/blkid/blkid/tab.old Файл (как найти делает).

ГНОМ

Без подстановочного персонажа (*), приложение Files Files Gnome Desktop предоставляет по сути ту же информацию, что и найти Команда:

Поиск по размеру

Допустим, мы хотели бы найти все файлы более 50 МибАнкетДля этой задачи мы можем добавить дюйт приказывать наш список вероятных подозреваемых:

дюйт

В дюйт Команда была разработана специально для этой задачи:

sudo du / -ha --threshold=50M

В -час опция предоставляет стандартные (человеческие) размеры файлов и Вариант включает в себя файлы, а также каталоги:


Чтобы подавить (четыре) сообщения об ошибках, вы можете использовать 2>&- аргументВы также можете сортировать по размеру файла:

sudo du / -ha --threshold=50M 2>&- | sort -h


Последняя строка показывает, что диск содержит 2,8 Гиб данных в общей сложности.

найти

Следующее находит все файлы (за исключением каталогов) более 50 мибов:

sudo find / -size +50M


Чтобы просмотреть размер каждого файла в байтах, вы можете использовать -ls вариант (и 2>&- Чтобы удалить сообщения об ошибках):

sudo find / -size +50M -ls 2>&-

7 -й столбец предоставляет размер каждого файла, в байтах.Чтобы просмотреть только путь файла, тип и размер, вы можете использовать -printf вариант, как показано:

sudo find / -size +50M -printf "%p %y %s bytes\n" 2>&- | column -t


В %п возвращает имя файла, %y Тип файла, % s размер в байтах и \ n генерирует символ Newline (для получения подробной информации, выполните человек найдет).

В колонка -t Команда Создает столбцы на основе силевых символов.Обратите внимание, что 140737477885952 байт составляет чуть менее 128 пиб, что явно неверно.Более точное исполнение следует:

sudo find / -size +50M -printf "%p %y %k KiB\n" 2>&- | column -t


В вышеизложенном, %k предоставляет размер файла в KIB (в отличие от % s байты).

найти

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

ГНОМ

Приложение для настольных файлов настольных компьютеров Gnome предоставляет типичные GUI полученные результаты:

Как видно выше, сортировка по столбцу размера не совсем полезна в отношении поиска всех файлов более 50 мибов.А дюйт или найти Команды более подходят для такой задачи.

Поиск пустых файлов

Ряд указанных выше команд имеют параметры, специально для поиска пустых файлов.Мы рассмотрим это следующее.

найти

Для найти команда, эта задача проста:

sudo find /tmp -empty -type f,d

Эта команда находит все пустые файлы и каталоги (т.е. -type f, D) в пределах /TMP папка, как показано:


Но что что?Как указано выше, мы можем использовать -printf а также столбец следующим образом:

sudo find /tmp -empty -type f,d -printf "%p %y %s bytes\n" | column -t


Обратите внимание, что каждый пустой каталог требует, чтобы в файловой системе Ubuntu требуется 4096 байт (4 киб).Вот пример одного пустого каталога и одного пустого файла:

найти

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

ГНОМ

Приложение для настольных файлов настольных компьютеров Gnome предоставляет относительно не ухудшенные результаты:

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

Выполнение действий в файле соответствует

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

найти

В найти командование -Эксек Опция выполняет предоставленную команду один раз для каждого сопоставленного файла.Например:

sudo find / -iname "*.old" -exec echo {} \;

В двух словах, это выполняет эхо командование на каждом .старый Файл найден.Здесь {} Синтаксис представляет каждый соответствующий файл.Таким образом, если vmlinux.old это соответствующий файл, затем команда Echo vmlinux.old выполнено.Полуколон используется для указания конца строки команды после -Эксек вариант.Поскольку полуколон имеет особое значение, его следует сбежать с персонажами BackSlash (\), следующим образом:


Чтобы удалить все *.старый файлы из /home/karlito каталог (или ~ каталог), вы можете запустить следующую команду:

sudo find . -iname "*.old" -exec rm -f {} \;

Мы видим, что все файлы в ~ каталог был удален:

найти

В найти Команда не имеет -Эксек вариант.Однако мы можем подражать этой функции, используя Ксаргс Команда:

sudo locate -i "*.old" | xargs -0 echo


В -0 опция позволяет Ксаргс Чтобы правильно обрабатывать атипичные символы файла.

Чтобы удалить все *.старый файлы из /home/karlito каталог, вы можете запустить:

sudo locate -i "/home/karlito/*.old" | xargs rm


Точно так же, чтобы удалить все .старый файлы, указанные в найти База данных команды (как правило, все *.старый Файлы на диске), вы можете запустить:

sudo locate -i "*.old" | xargs rm

ГНОМ

Чтобы выполнить одно и то же действие, используя приложение Files, сначала найдите все файлы с помощью.старый расширение:

Далее выберите все соответствующие файлы, нажав Ctrl + A. Затем нажмите клавишу Delete и выберите удалять кнопка:

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


Поскольку Ксаргс Команда быстро, гибкая и может использоваться со многими другими командами, в целом имеет смысл использовать ее для большинства сценариев.Например, в следующих копиях все файлы, содержащие «резервное копирование» в каталог, называемый «резервные копии» в домашней папке пользователя:

sudo find / -type f -iname "*backup*" -print0 | xargs -0 -I {} sh -c 'stat -c "%n %s bytes" {}; cp {} ~/backups'

Подробное объяснение каждой команды и опции следует:

  • судо Позволяет найти Команда для поиска без получения разрешения отказано в ошибках.
  • найти Команда, которая ищет файлы (выполнить человек найдет для получения подробной информации).
  • / Запускает поиск из корневого каталога.
  • -type f Ищет файлы (а не каталоги).
  • -iname "*Backup*" Игнорируя случай, инструктируют найти команда, чтобы найти все файлы, содержащие «резервное копирование» где -то в имени файла.Обратите внимание на использование двух (*) Персонажи с подстановочными знаками.
  • -print0 Форматирует выход найти командовать так, чтобы его можно было использовать другими командами, включая КсаргАнкетОсобенно, -print0 Позволяет правильно интерпретировать имена файлов, которые содержат новые линии или другие типы пробелов, которые могут быть правильно интерпретированы программами, которые могут обрабатывать такой ввод.Обратите внимание, что -print0 вариант соответствует -0 вариант Ксаргс команда.
  • Ксаргс Преобразует свой стандартный вход в аргументы для других команд, таких как статистика а также сн команда.
  • -0 Готовит Ксаргс Команда для получения входа, который может содержать пробелы, цитаты, следы или обратную черту.
  • Параметр «i» позволяет вводу Ксаргс использоваться в нескольких местах, например, через {} токен.
  • SH -C Это вызывает отдельную интерпретатор командной строки (Shell) и выполняет переданные команды.В таком случае, 'stat -c " %n %s байты" {};cp {} ~/резервные копии 'АнкетЭта вторая оболочка позволяет Ксаргс Чтобы запустить несколько команд, используя {} токен.
  • stat -c " %n %s байты" {} Отображает имя %n и размер % s файла, содержащегося в {} токен (в байтах).
  • ; Полуколон позволяет выполнять две или более команд в одной и той же строке.
  • CP {} ~/резервные копии Копирует данный {} файл в ~/резервные копии каталог.

Соединение всего этого приводит к выводу, аналогично следующему:

В вышеперечисленном мы можем увидеть все файлы, которые теоретически скопировали в ~/резервные копииАнкетЭто теоретически, что не все файлы были фактически скопированы:

Это важный момент - не было проблем с отображением статистика Связанная информация, но были проблемы для сн команда (о которых не сообщается).

Рафинирование поисков с помощью команды GREP

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

sudo find / -iname '*.log' -type f -print0 | xargs -0 grep warning

Запуск команд до трубы ( | ) Оператор возвращает ожидаемый список *.бревно файлыТем не менее, запуск всей командной строки возвращает за файл разрешение, запрещенные ошибки:


Это потому, что грип Команда также требует судо возвышение.Таким образом, следующая командная строка дает желаемые результаты (оба -Iname а также Игнорировать дело):

sudo find / -iname '*.log' -type f -print0 | xargs -0 sudo -i grep warning

Чтобы найти все *.журнал Файлы, содержащие предупреждение, критическийи/или ошибка, мы можем использовать логическую или ( | ) оператор, который должен быть сбежал, чтобы он не был запутан со стандартным оператором трубы:

sudo find / -iname '*.log' -type f -print0 | xargs -0 sudo grep -l -i 'warning\|critical\|error'

Опция строчного "L" -l Отображает список соответствующих файлов, а не связанный контент:

Вывод

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

Написано Karlito Bonnevie  /  Июнь 20, 2022