Arch linux поиск файла

Core utilities (Русский)

Основные утилиты (core utilities) — набор базовых, фундаментальных инструментов операционной системы GNU/Linux. В статье дан неполный обзор этих утилит, приведены ссылки на документацию и перечислены полезные альтернативы. В основном (но не только) в статье рассматривается набор GNU coreutils. Большинство основных утилит являются традиционными инструментами Unix (см. Heirloom); многие из них были стандартизированы POSIX, но продолжили развиваться, расширяя свою функциональность.

Большинство интерфейсов командной строки задокументировано в man-страницах. Утилиты GNU Project используют для этой цели Info-мануалы, а в некоторых оболочках для справки по встроенным командам предусмотрена команда help . Кроме того, большинство утилит выводит краткую справочную информацию о себе при запуске с флагом —help .

Contents

Основные

Некоторые важные утилиты, с которыми должен быть знаком пользователь Arch Linux. См. также intro(1) .

Пакет Утилита Описание Документация Альтернативы
встроенные команды cd смена каталога cd(1p) #Альтернативы cd
GNU coreutils ls вывод содержимого каталога ls(1) , info tree , #Альтернативы ls
cat вывод содержимого файлов в stdout cat(1) , info tac(1) , bat
mkdir создание каталога mkdir(1) , info
rmdir удаление пустого каталога rmdir(1) , info
rm удаление файлов и каталогов rm(1) , info shred
cp копирование файлов и каталогов cp(1) , info #Альтернативы cp
mv перемещение файлов и каталогов mv(1) , info
ln создание жёстких и символических ссылок ln(1) , info
chown изменение владельца и группы файла chown(1) , info chgrp(1)
chmod изменение прав доступа к файлу chmod(1) , info
dd преобразование и копирование файла dd(1) , info
df вывод информации об использовании файловой системой дискового пространства df(1) , info
GNU tar tar архиватор tar tar(1) , info архиваторы
GNU less less постраничный просмотр в терминале less(1) программы постраничного просмотра
GNU findutils find поиск файлов и каталогов find(1) , info, GregsWiki #Альтернативы find
GNU diffutils diff построчное сравнение файлов diff(1) , info #Альтернативы diff
GNU grep grep вывод строк, совпадающих с шаблоном grep(1) , info #Альтернативы grep
GNU sed sed потоковый редактор sed(1) , info, one-liners
GNU gawk awk язык поиска и обработки шаблонов gawk(1) , info nawk , mawk AUR
util-linux dmesg вывод содержимого буфера ядра и управление им dmesg(1) журнал systemd
lsblk вывод информации о блочных устройствах lsblk(8)
mount монтирование файловой системы mount(8)
umount размонтирование файловой системы umount(8)
su замена пользователя su(1) sudo, opendoas
kill завершение процесса kill(1) pkill(1) , killall(1)
procps-ng pgrep поиск процесса по имени или атрибутам pgrep(1) pidof(1)
ps вывод информации о процессах ps(1) top(1) , htop
free вывод информации о свободной/используемой памяти free(1)

Предотвращение потери данных

rm , mv , cp и перенаправления ввода/вывода в оболочке удаляют или перезаписывают файлы молча, не уведомляя пользователя. С флагом -i команды rm , mv и cp будут запрашивать разрешение перед каждым удалением/перезаписью. Некоторые предпочитают использовать этот флаг по умолчанию, создав соответствующий псевдоним. Тем не менее, такой подход чреват потенциальными проблемами, если в какой-то момент вы будете работать на другой системе или от другого пользователя, в которых подобный псевдоним отсутствует. Лучший способ защитить данные от случайного удаления — регулярно создавать резервные копии.

Читайте также:  Аккаунт майкрософт windows вход

Второстепенные

Утилиты, которые также могут быть полезны.

Пакет Утилита Описание Документация Альтернативы
встроенные команды alias создание или вывод списка псевдонимов alias(1p)
type определение типа команды type(1p) which(1)
time вывод времени выполнения команды time(1p)
GNU coreutils tee считывание stdin и запись в stdout и файлы tee(1) , info
mktemp создание временного файла или каталога mktemp(1) , info
cut вывод отдельных частей строк cut(1) , info
tr замена или удаление символов tr(1) , info
od отображение файлов в восьмеричном и других форматах od(1) , info hexdump(1) , xxd(1) в vim
sort сортировка строк sort(1) , info
uniq поиск или исключение повторяющихся строк uniq(1) , info
comm построчное сравнение двух отсортированных файлов comm(1) , info
head вывод первых строк файла head(1) , info
tail вывод последних строк файла или отслеживание изменений в файле tail(1) , info
wc вывод количества строк, слов и байтов wc(1) , info
GNU binutils strings вывод содержащихся в двоичном файле текстовых строк strings(1) , info
GNU glibc iconv конвертация кодировок символов iconv(1) recode
file file определение типа файла file(1)

Пакет moreutils содержит другие полезные инструменты вроде sponge(1) , которые не вошли в GNU coreutils.

Альтернативы

Альтернативные основные утилиты предоставляются следующими пакетами: BusyBox, Heirloom Toolchest, 9base , sbase-git AUR и ubase-git AUR .

Альтернативы cd

  • zoxide — Умная команда cd, которая изучает ваши привычки и позволяет перемещаться повсюду буквально несколькими нажатиями клавиш.

https://github.com/ajeetdsouza/zoxide || zoxide

Альтернативы cp

rsync#Как альтернатива cp/mv позволяет продолжить прерванную передачу файла, выводить состояние передачи, пропускать уже существующие файлы и проверять целостность итоговых файлов по контрольным суммам.

Альтернативы ls

  • broot — Новый способ просмотра дерева каталогов и перемещения по нему.

https://github.com/Canop/broot || broot

  • exa — Замена ls с поддержкой цветности, отображением дерева каталогов, интеграцией с git и другими возможностями.

https://github.com/ogham/exa || exa

  • lsd — Современный ls с большим набором цветов и замечательными иконками.

https://github.com/Peltoche/lsd || lsd

Альтернативы find

  • fd — Простая, быстрая и удобная альтернатива find. По умолчанию игнорирует скрытые файлы и файлы, указанные в .gitignore .

https://github.com/sharkdp/fd || fd

  • fuzzy-find — Fuzzy-завершение имён файлов при поиске.

https://github.com/silentbicycle/ff || ff-gitAUR

  • mlocate — Объединение locate и updatedb.

https://pagure.io/mlocate || mlocate

  • plocate — Намного более быстрый locate.

https://plocate.sesse.net/ || plocate

Графические программы для поиска файлов перечислены в List of applications/Utilities#File searching.

Альтернативы diff

Некоторые программы предоставляют сравнение по словам, которого нет в diffutils :

  • git diff выполняет сравнение по словам с флагом —color-words ; с флагом —no-index работает также и с файлами вне рабочего дерева Git.
  • dwdiff — Фронт-енд для diff со сравнением по словам; поддержка цветности.

https://os.ghalkes.nl/dwdiff.html || dwdiff

  • GNU wdiff — Реализация GNU diff со сравнением по словам; нет поддержки цветности.

https://www.gnu.org/software/wdiff/ || wdiff

  • cwdiff — Обёртка для GNU wdiff с поддержкой цветности.

https://github.com/junghans/cwdiff || cwdiffAUR , cwdiff-gitAUR

  • icdiff — diff с поддержкой цветности, написанный на Python. Название расшифровывается как «Improved color diff»; обычный режим работы diff также доступен.

https://github.com/jeffkaufman/icdiff || icdiffAUR , icdiff-gitAUR

Альтернативы grep

  • mgrep — grep с многострочным поиском.

https://sourceforge.net/projects/multiline-grep/ || mgrepAUR

  • pdfgrep — Инструмент для поиска текста в PDF-файлах.

https://pdfgrep.org/ || pdfgrep

  • ripgrep-all — Поиск в текстовых файлах, а также в PDF, E-Book, документах Office, архивах zip и tar.gz.

https://github.com/phiresky/ripgrep-all || ripgrep-allAUR

Поиск кода

Следующие три инструмента предназначены для замены grep при поиске кода. По умолчанию используют рекурсивный поиск, пропускают двоичные файлы и учитывают .gitignore .

Читайте также:  Jbl speakershop mac os

Источник

Поиск в Linux с помощью команды find

Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.

Общий синтаксис

путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».

набор правил, по которым выполнять поиск.

* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.

Описание опций

Тип объекта поиска. Возможные варианты:

  • f — файл;
  • d — каталог;
  • l — ссылка;
  • p — pipe;
  • s — сокет.
Опция Описание
-name Поиск по имени.
-iname Регистронезависимый поиск по имени.
-type
-size Размер объекта. Задается в блоках по 512 байт или просто в байтах (с символом «c»).
-mtime Время изменения файла. Указывается в днях.
-mmin Время изменения в минутах.
-atime Время последнего обращения к объекту в днях.
-amin Время последнего обращения в минутах.
-ctime Последнее изменение владельца или прав на объект в днях.
-cmin Последнее изменение владельца или прав в минутах.
-user Поиск по владельцу.
-group По группе.
-perm С определенными правами доступа.
-depth Поиск должен начаться не с корня, а с самого глубоко вложенного каталога.
-maxdepth Максимальная глубина поиска по каталогам. -maxdepth 0 — поиск только в текущем каталоге. По умолчанию, поиск рекурсивный.
-prune Исключение перечисленных каталогов.
-mount Не переходить в другие файловые системы.
-regex По имени с регулярным выражением.
-regextype Тип регулярного выражения.
-L или -follow Показывает содержимое символьных ссылок (симлинк).
-empty Искать пустые каталоги.
-delete Удалить найденное.
-ls Вывод как ls -dgils
-print Показать найденное.
-print0 Путь к найденным объектам.
-exec <> \; Выполнить команду над найденным.
-ok Выдать запрос перед выполнением -exec.

Также доступны логические операторы:

Оператор Описание
-a Логическое И. Объединяем несколько критериев поиска.
-o Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска.
-not или ! Логическое НЕ. Инвертирует критерий поиска.

Полный набор актуальных опций можно получить командой man find.

Примеры использования find

Поиск файла по имени

1. Простой поиск по имени:

find / -name «file.txt»

* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня /.

2. Поиск файла по части имени:

* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp

3. Несколько условий.

а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:

find . -name «sess_*» -a -name «*cd»

б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:

find . -name «sess_*» -o -name «*cd»

в) Более компактный вид имеют регулярные выражения, например:

find . -regex ‘.*/\(sess_.*cd\)’

* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).

4. Найти все файлы, кроме .log:

find . ! -name «*.log»

* в данном примере мы воспользовались логическим оператором !.

Поиск по дате

1. Поиск файлов, которые менялись определенное количество дней назад:

find . -type f -mtime +60

* данная команда найдет файлы, которые менялись более 60 дней назад.

2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find —version).

а) дате изменения:

find . -type f -newermt «2019-11-02 00:00»

* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.

find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02

* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).

б) дате обращения:

find . -type f -newerat 2019-10-08

* все файлы, к которым обращались с 08.10.2019.

find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01

* все файлы, к которым обращались в октябре.

в) дате создания:

find . -type f -newerct 2019-09-07

* все файлы, созданные с 07 сентября 2019 года.

find . -type f -newerct 2019-09-07 ! -newerct «2019-09-09 07:50:00»

* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50

По типу

Искать в текущей директории и всех ее подпапках только файлы:

* f — искать только файлы.

Поиск по правам доступа

1. Ищем все справами на чтение и запись:

find / -perm 0666

2. Находим файлы, доступ к которым имеет только владелец:

find / -perm 0600

Поиск файла по содержимому

find / -type f -exec grep -i -H «content» <> \;

* в данном примере выполнен рекурсивный поиск всех файлов в директории / и выведен список тех, в которых содержится строка content.

С сортировкой по дате модификации

find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r

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

Лимит на количество выводимых результатов

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

find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r | head -n 1

Поиск с действием (exec)

1. Найти только файлы, которые начинаются на sess_ и удалить их:

find . -name «sess_*» -type f -print -exec rm <> \;

* -print использовать не обязательно, но он покажет все, что будет удаляться, поэтому данную опцию удобно использовать, когда команда выполняется вручную.

2. Переименовать найденные файлы:

find . -name «sess_*» -type f -exec mv <> new_name \;

find . -name «sess_*» -type f | xargs -I ‘<>‘ mv <> new_name

3. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:

find . -name «*.tmp» | wc -l

4. Изменить права:

find /home/user/* -type d -exec chmod 2700 <> \;

* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.

5. Передать найденные файлы конвееру (pipe):

find /etc -name ‘*.conf’ -follow -type f -exec cat <> \; | grep ‘test’

* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.

6. Произвести замену в файлах с помощью команды sed:

find /opt/project -type f -exec sed -i -e «s/test/production/g» <> \;

* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.

Чистка по расписанию

Команду find удобно использовать для автоматического удаления устаревших файлов.

Открываем на редактирование задания cron:

0 0 * * * /bin/find /tmp -mtime +14 -exec rm <> \;

* в данном примере мы удаляем все файлы и папки из каталога /tmp, которые старше 14 дней. Задание запускается каждый день в 00:00.
* полный путь к исполняемому файлу find смотрим командой which find — в разных UNIX системах он может располагаться в разных местах.

Источник

Читайте также:  Node js addons windows
Оцените статью