Hostwinds Учебники
Результаты поиска для:
Содержание
Теги: Cloud Servers, Dedicated Server
В этом уроке мы рассмотрим ряд методов поиска файлов и каталогов (то есть папков) в 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 -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'
Подробное объяснение каждой команды и опции следует:
Соединение всего этого приводит к выводу, аналогично следующему:
В вышеперечисленном мы можем увидеть все файлы, которые теоретически скопировали в ~/резервные копииАнкетЭто теоретически, что не все файлы были фактически скопированы:
Это важный момент - не было проблем с отображением статистика Связанная информация, но были проблемы для сн команда (о которых не сообщается).
Затем мы будем искать содержимое соответствующих файлов, чтобы найти одно или несколько ключевых слов.Для начала мы рассмотрим все *.журнал файлы для происшествий предупреждениеАнкетДля этого мы используем вездесущий грип Команда:
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