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

Содержание:

Почти неограниченный поиск

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

Стандартные инструменты , интегрированные в графический интерфейс пользователя (GUI), позволяют выполнять несколько общих задач с найденными файлами: их можно выбрать для вырезания, вставки, копирования; эти файлы можно переместить в новый каталог; можно открыть их программой, при помощи которой эти файлы были созданы. Эти операции состоят из двух и более шагов и не являются автоматическими – сначала выполняется поиск файлов, затем, с использованием GUI-интерфейса, эти файлы помечаются для выполнения следующей операции. Этот подход хорошо подходит для многих пользователей, но исследователь хочет большего.

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

Examples

find ~/. -name "*.txt" -amin -120

Find all files in your home directory and below which end in the extension «.txt«. Display only files accessed in the past two hours.

find . -name "*.zip" -size +10M -mtime -3

Find all files in the working directory and below whose name has the extension «.zip» and whose size is greater than 10 megabytes. Display only files whose contents were modified in the last 72 hours.

find . -iname "*report*" -type f -maxdepth 2

Perform a case-insensitive search for files that contain the word «report» in their name. If the search finds a directory with «report» in its name, do not display it. Search only in the working directory, and one directory level beneath it.

find / -name "*init*" 2>&1 | grep -v "Permission denied" | tee ~/initfiles.txt

Find all files on the system whose name contains «init«, suppressing error messages. Display results on the screen and output them to a file in your home directory named «initfiles.txt«.

atime – Last Access Time

Access time shows the last time the data from a file or directory was accessed – read by one of the Unix processes directly or through commands and scripts.

Due to its definition, atime attribute must be updated – meaning written to a disk – every time a Unix file is accessed, even if it was just a read operation. Under extreme loads, atime requirement could severely impact the filesystem performance, especfially with hard disks (HDDs) compared to Solid State Disks (SSDs).

Modern Unix and Unix like operating systems have special mount options to optimise atime usage (or disable it completely).

For instance, in Linux kernel the following atime optimisations are supported when mounting filesystem:

  • strictatime – always update atime (no longer the default!)
  • relatime (“relative atime”) – selective atime updates, usually if previous — atime is an older timestamp than ctime and mtime (see below)
  • nodiratime – no access time updates for directories (files still get atime updates)
  • noatime – no access time updates for anything

Suppressing error messages

You may receive the error message «Permission denied» when performing a search. For instance, if you search the root directory as a normal user:

find /
find: `/var/lib/sudo/ts': Permission denied
find: `/var/lib/sudo/lectured': Permission denied
find: `/var/lib/polkit-1': Permission denied
find: `/var/lib/container': Permission denied
find: `/var/lib/gdm3/.dbus': Permission denied
find: `/var/lib/gdm3/.config/ibus': Permission denied
...

You will receive that error message if find tries to access a file your user account doesn’t have permission to read. You may be able to perform the search as the superuser (root), which has complete access to every file on the system. But it’s not recommended to do things as root, unless there are no other options.

If all you need to do is hide the «Permission denied» messages, you can add 2&>1 | grep -v «Permission denied» to the end of your command, like this:

find / 2>&1 | grep -v "Permission denied"

The above example filters out the «Permission denied» messages from your search. How?

2>&1 is a special redirect that sends error messages to the standard output to pipe the combined lines of output to the grep command. grep -v then performs an inverse match on «Permission denied», displaying only lines which do not contain that string.

Redirecting and using grep to filter the error messages is a useful technique when «Permission denied» is cluttering your search results and you can’t perform the search as root.

How to Use atime, ctime and mtime

Lots of common system administration tasks can be helped, if not completed, using knowledge of atime, ctime and mtime attributed:

  • find files updated on a certain date
  • confirm when was the last time a configuration file was changed
  • find files modified in the last hour or day – very useful for finding most recently updated log files
  • verify if a certain file was accessed and when – useful when debugging a script
  • quickly get the list of really old files (not updated for longer than 30 days or something like that)
  • confirm when the directory was updated – can suggest that temporary files were created and quickly deleted, so you don’t see the files but recognise evidence when they were still in the directory
  • review a list of files to confirm when they had ownership (user/group) data updated and if this time is different from file modifications – could be useful when reviewing security breach on your Unix system

Redirecting output to a text file

If you are performing a very large search, you may want to save your search results in a file, so that you can view the results later. You can do this by redirecting your find output to a file:

find . -iname "*.jpg" > images.txt

You can then open your results in a text editor, or print them with the cat command.

cat images.txt
./images/hp/snape.jpg
./images/hp/harry.jpg
./images/memes/winteriscoming.jpg
./images/memes/goodguygary.JPG
./images/memes/picard.jpg

Alternatively, you can pipe your output to the tee command, which prints the output to the screen and write it to a file:

find . -size +500M | tee bigfiles.txt
./archlinux-2016.02.01-dual.iso
cat bigfiles.txt
./archlinux-2016.02.01-dual.iso

Filtering by Depth

For this section, we will create a directory structure in a temporary directory. It will contain three levels of directories, with ten directories at the first level. Each directory (including the temp directory) will contain ten files and ten subdirectories.

Make this structure by issuing the following commands:

Feel free to check out the directory structures with and to get a handle on how things are organized. When you are finished, return to the test directory:

We will work on how to return specific files from this structure. Let’s try an example with just a regular name search first, for comparison:

There are a lot of results. If we pipe the output into a counter, we can see that there are 1111 total results:

This is probably too many results to be useful to you in most circumstances. Let’s try to narrow it down.

You can specify the maximum depth of the search under the top-level search directory:

To find “file1” only in the “level1” directories and above, you can specify a max depth of 2 (1 for the top-level directory, and 1 for the level1 directories):

That is a much more manageable list.

You can also specify a minimum directory if you know that all of the files exist past a certain point under the current directory:

We can use this to find only the files at the end of the directory branches:

Again, because of our branching directory structure, this will return a large number of results (1000).

You can combine the min and max depth parameters to focus in on a narrow range:

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

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

Поиск текста в файлах

В первом примере мы будем искать пользователя User в файле паролей Linux. Чтобы выполнить поиск текста grep в файле /etc/passwd введите следующую команду:

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

А теперь не будем учитывать регистр во время поиска. Тогда комбинации ABC, abc и Abc с точки зрения программы будут одинаковы:

Вывести несколько строк

Например, мы хотим выбрать все ошибки из лог-файла, но знаем, что в следующей строчке после ошибки может содержаться полезная информация, тогда с помощью grep отобразим несколько строк. Ошибки будем искать в Xorg.log по шаблону «EE»:

Выведет строку с вхождением и 4 строчки после неё:

Выведет целевую строку и 4 строчки до неё:

Выведет по две строки с верху и снизу от вхождения.

Регулярные выражения в grep

Регулярные выражения grep — очень мощный инструмент в разы расширяющий возможности поиска текста в файлах. Для активации этого режима используйте опцию -e. Рассмотрим несколько примеров:

Поиск вхождения в начале строки с помощью спецсимвола «^», например, выведем все сообщения за ноябрь:

Поиск в конце строки — спецсимвол «$»:

Найдём все строки, которые содержат цифры:

Вообще, регулярные выражения grep — это очень обширная тема, в этой статье я лишь показал несколько примеров. Как вы увидели, поиск текста в файлах grep становиться ещё эффективнее. Но на полное объяснение этой темы нужна целая статья, поэтому пока пропустим её и пойдем дальше.

Рекурсивное использование grep

Если вам нужно провести поиск текста в нескольких файлах, размещённых в одном каталоге или подкаталогах, например в файлах конфигурации Apache — /etc/apache2/, используйте рекурсивный поиск. Для включения рекурсивного поиска в grep есть опция -r. Следующая команда займётся поиском текста в файлах Linux во всех подкаталогах /etc/apache2 на предмет вхождения строки mydomain.com:

В выводе вы получите:

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

Поиск слов в grep

Когда вы ищете строку abc, grep будет выводить также kbabc, abc123, aafrabc32 и тому подобные комбинации. Вы можете заставить утилиту искать по содержимому файлов в Linux только те строки, которые выключают искомые слова с помощью опции -w:

Количество вхождений строки

Утилита grep может сообщить, сколько раз определённая строка была найдена в каждом файле. Для этого используется опция -c (счетчик):

C помощью опции -n можно выводить номер строки, в которой найдено вхождение, например:

Получим:

Инвертированный поиск в grep

Команда grep Linux может быть использована для поиска строк в файле, которые не содержат указанное слово. Например, вывести только те строки, которые не содержат слово пар:

Вывод имени файла

Вы можете указать grep выводить только имя файла, в котором было найдено заданное слово с помощью опции -l. Например, следующая команда выведет все имена файлов, при поиске по содержимому которых было обнаружено вхождение primary:

Run Execute Command on Files That Return With ‘Find’ Command

Before using the executable command, users must be cautious as it can modify everything. The execute a command (-exec) allows users to take action on files found by using the ‘find command.’

28. Searching /Tmp Folder

So if a user wants to search the /tmp folder for the file name ‘trial’ and show the results on the screen, then one needs to execute the following find command:

29. Changing the Owner

It is an interesting example of the extent a user can use the execute command. The following command will return file trial.txt whose owner is Molly in /home folder. Then the -exec command will alter the ownership to Sam by running the chown command.

30. Change Permission Using -Exec

As it is a fact that possibilities with -exec is endless. A user can run the chmod command on files that return with the find command to change the file permissions to 755.

The above are some of the most common ‘find’ commands on Linux. There are many other possibilities that users can choose to and make file searching less time consuming and easy.

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

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

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

find / -name «file.txt»

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

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

find / -name «*.tmp»

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

3. Найти все файлы или папки, которые начинаются на sess_ и заканчиваются на cd

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

* -a: логическое И, -o: логическое ИЛИ.

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

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

find . -type f

* 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, которая уже и выполнила поиск по содержимому данных файлов.

Linux поиск по содержимому файлов командой locate

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

Данная команда, как правило, работает быстрее и может с легкостью производить поиск (в широком смысле — стремление добиться чего-либо, найти что-либо; действия субъекта, направленные на получение нового или утерянного (забытого): новой информации (поиск информации), данных,) по всей файловой системы. Linux имеет специальную команду grep, какая принимает шаблон для поиска и имя файла (именованная область данных на носителе информации). В случае нахождения совпадений, они будут выведены в терминал. В всеобщем виде выражение можно составить как «grep шаблон_поиска имя_файла». Чтобы отыскать файлы с помощью команды locate, просто используйте следующий синтаксис:

К образцу, чтобы возвращать только файлы, содержащие сам запрос, вместо того чтобы вводить каждый файл, который содержит запрос в ведущих к нему каталогах, можно утилизировать флаг –b (чтоб искать только basename, базовое имя файла):

Команды find и locate – отличные инструменты для поиска файлов в UNIX‐подобных операционных системах. Любая из этих утилит имеет свои преимущества. Мы рассмотрели использование команд для поиска и фильтрации вывода бригад в операционной системе Linux. При правильном применении эта утилита станет мощным инструментом в ваших руках. Несмотря на то, что команды find и locate сами по себе очень мощны, их действие возможно расширить, комбинируя их с другими командами. Научившись работать с find и locate, попробуйте чистить их результаты при помощи команд wc, sort и grep.

Specifying where to search

To only list files and subdirectories that are contained in the directory /home/hope/Documents/images, specify it as the first argument of the command:

find /home/hope/Documents/images
/home/hope/Documents/images
/home/hope/Documents/images/hp
/home/hope/Documents/images/hp/snape.jpg
/home/hope/Documents/images/hp/harry.jpg
/home/hope/Documents/images/memes
/home/hope/Documents/images/memes/winteriscoming.jpg
/home/hope/Documents/images/memes/goodguygary.JPG
/home/hope/Documents/images/memes/picard.jpg

Notice that the full path is also shown in the results.

If our working directory is /home/hope/Documents, we can use the following command, which finds the same files:

find ./images

But this time, the output reflects the starting location of the search and looks like this:

./images
./images/hp
./images/hp/snape.jpg
./images/hp/harry.jpg
./images/memes
./images/memes/winteriscoming.jpg
./images/memes/goodguygary.JPG
./images/memes/picard.jpg

By default, the search looks in every subdirectory of your starting location. If you want to restrict how many levels of subdirectory to search, you can use the -maxdepth option with a number.

For instance, specifying -maxdepth 1 searches only in the directory where the search begins. If any subdirectories are found, they are listed, but not searched.

find . -maxdepth 1
.
./images
./bigfiles.txt
./gimp-2.8.16.tar.bz2
./hp-fanfic
./archlinux-2016.02.01-dual.iso

Specifying -maxdepth 2 searches the directory and one subdirectory deep:

find . -maxdepth 2
.
./images
./images/hp
./images/memes
./gimp-2.8.16.tar.bz2
./hp-fanfic
./hp-fanfic/malfoys-revenge.doc
./hp-fanfic/weekend-at-hagreds.doc
./hp-fanfic/dumbledores-lament.doc
./archlinux-2016.02.01-dual.iso

Specifying -maxdepth 3 searches one level deeper than that:

find . -maxdepth 3
.
./images
./images/hp
./images/hp/snape.jpg
./images/hp/harry.jpg
./images/memes
./images/memes/winteriscoming.jpg
./images/memes/goodguygary.JPG
./images/memes/picard.jpg
./gimp-2.8.16.tar.bz2
./hp-fanfic
./hp-fanfic/malfoys-revenge.doc
./hp-fanfic/weekend-at-hagreds.doc
./hp-fanfic/dumbledores-lament.doc
./archlinux-2016.02.01-dual.iso

Поиск файла в Linux по имени командой find

Find рекурсивно обходит указанные сборники и файлы, проверяет для них выполнение указанных условий и может вдобавок выполнять с найденными файлами подтвержденные действия. Например, самое простое действие — распечатать имя файла. Для поиска файлов из инструктивной строки вы можете использовать команду “find”. Команда find имеет следующий формат:

Если вы не укажете путь, find начнет поиск заданного образца с нынешного каталога и продолжит его по всем имеющимся в нем подкаталогам. Команда find имеет множество настроек, ознакомиться с которыми можно, прочитав man-страницу (введите в командной строке man find). Почаще всего используется опция -name, которая задает поиск всех файлов и каталогов, сохраняющих в названии определенное сочетание букв.

Эта команда задает поиск в нынешном каталоге всех файлов, содержащих в названии «tes».

Примеры

Для первого примера, скопируем файл /root/katalog/dokument в папку, которая называется «newpapka».

Копирование нескольких файлов в одну директорию.

Cкопируем «dokument» и «file» в каталог «newpapka».

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

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

Существует альтернатива данной функции, благодаря запросу «-n» можно сказать программе, чтобы она вообще не перезаписывала файлы.

Данная возможность будет полезна при следующей ситуации: пользователю известно, что в определенном месте для копирования уже содержится тот же файл, но с устаревшей версией, а с помощью функции «-u» можно безболезненно перезаписать старые данные:

Скопировать директорию

Для копирование папки со всем ее содержимом необходимо использовать параметр -r.

Если нужно только сделать копию всех файлов без папки, то опция -r не подойдет.

Можно сделать так:

Как видно из примера выше, команда cp работает со знаками «*» и «?», следующий запрос, займется копированием всех файлов, чье название начинается с new:

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

С ее помощью появится резервный файл, который имеет расширение, указанное в скобках.

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

Регулярные выражения

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

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

Вот пример, в нем проводится копирование файлов, которые содержат цифры от 1 до 5:

Здесь:

  • /root — каталог где производить поиск.
  • -name — критерии поиска.
  • — что искать, в данном случаи от одного до пяти.
  • -exec — аргумент, который говорит, что нужно запустить команду.
  • {} — подставляет имя каждого файла.

Сделать то же самое можно и не прибегая к find, можно обратиться к утилите ls, выбрать нужные файлы, используя регулярные выражения egrep, затем отправить их под контроль cp, применяя при этом xargs:

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

Копирование при помощи перенаправления вывода

В операционной системе Linux есть специальный символ «>», который означает перенаправление вывода.

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

Используя cat можно выводить на экран основные данные файла, а затем, используя bash, пользователь сможет переносить составляющие файла из одного места в другое.

Вот пример:

TAR

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

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

С помощью cp так делать можно, однако на помощь придется позвать утилиту tar, чтобы она начала работу следует написать в cp «-p».

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

С помощью данной команды все из папки /lfc отправляется в папку /epl/lfc. Таким способом можно скопировать любую информацию с компьютера, даже если это операционная система.

Итог

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

Find Files by Name using find command

1. Find From the Current Directory

The command searches the current working directory for the file name ‘putty.txt’ However if a user wants the ‘find command’ to return only files and not the directories then one has to add -type f at the end of the command.

3. Find Files in /Home Directory Regardless of Case Sensitive

The command seeks to look for all files irrespective of the case, i.e., uppercase or lowercase in the /home directory. Therefore the result will display all results that match the file name.

4. Search All Directories for a Particular File

The command searches directories with a specific name such as ‘puttygen’ in the root folder. For example, the title to search is ‘puttygen,’ then the user has to type the below command.

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

find <где искать> <опции>

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

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

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

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

Опция Описание
-name Поиск по имени.
-iname Регистронезависимый поиск по имени.
-type

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

  • f — файл;
  • d — каталог;
  • l — ссылка;
  • p — pipe;
  • s — сокет.
-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.

Filtering by Time and Size

Find gives you a variety of ways to filter results by size and time.

Size

You can filter by size with the use of the “-size” parameter.

We add a suffix on the end of our value that specifies how we are counting. These are some popular options:

  • c: bytes

  • k: Kilobytes

  • M: Megabytes

  • G: Gigabytes

  • b: 512-byte blocks

To find all files that are exactly 50 bytes, type:

To find all files less than 50 bytes, we can use this form instead:

To Find all files more than 700 Megabytes, we can use this command:

Time

Linux stores time data about access times, modification times, and change times.

  • Access Time: Last time a file was read or written to.

  • Modification Time: Last time the contents of the file were modified.

  • Change Time: Last time the file’s inode meta-data was changed.

We can use these with the “-atime”, “-mtime”, and “-ctime” parameters. These can use the plus and minus symbols to specify greater than or less than, like we did with size.

The value of this parameter specifies how many days ago you’d like to search.

To find files that have a modification time of a day ago, type:

If we want files that were accessed in less than a day ago, we can type:

To get files that last had their meta information changed more than 3 days ago, type:

There are also some companion parameters we can use to specify minutes instead of days:

This will give the files that have been modified type the system in the last minute.

Find can also do comparisons against a reference file and return those that are newer:

Синтаксис

Рассмотрим синтаксис утилиты.

Как только команда будет активирована, отправляемый файл перенесется в место для приема, при указании на конце файла значка «/» он также будет перенесен, но с новым именем.

Основные параметры:

  • —attributes-only – переместить не сам файл, а только данные пользователя и флаги доступа;
  • -f —force – вместо старых данных записать новые;
  • -i —interactive – спросить о необходимости переписывать старую информацию;
  • -L – создать копию не ссылок-символов, а того, что находится по этим ссылкам;
  • -n – оставить старые файлы на их месте;
  • -P – игнорировать ссылки-символы;
  • -r – скопировать данные Linux используя рекурсию;
  • -s – ничего не копировать, просто создать ссылки-символы;
  • -u – копировать файл, но при условии, что он уже был изменен;
  • -x – проводить все действия только внутри одной системы файлов;
  • -p – во время копирования сохранить все информацию о файле;
  • -t – команда дает возможность считать файл для приема директорией, и отправлять в него нужный объект;

Последние изменения

09.06.2020

Юридический адрес изменен с 190068, город Санкт-Петербург, улица Декабристов, дом 6 литера а, помещение 10-н офис 3-67 на 190068, город Санкт-Петербург, Большая Подьяческая улица, дом 39 литер а, офис 212

Снята
отметка о недостоверности сведений об адресе

15.05.2020

Добавлена
отметка о недостоверности сведений об адресе

08.04.2020

Юридический адрес изменен с 190068, город Санкт-Петербург, улица Декабристов, 6литера, помещение 10-н офис 3-67 на 190000, город Санкт-Петербург, улица Декабристов, дом 6 литера а, помещение 10-н, офис 3-67

06.03.2020

Юридический адрес изменен с 190000, город Санкт-Петербург, улица Декабристов, дом 6 литера а, помещение 10-н, офис 3-67 на 190068, город Санкт-Петербург, улица Декабристов, 6литера, помещение 10-н офис 3-67

26.12.2019

Новая госзакупка в роли поставщика, контракт № 4137726727278320000,
контрагент:
КИО

04.10.2019

Новая госзакупка в роли поставщика, контракт № 1340839452783200007,
контрагент:
КИО

09.09.2019

Завершено рассмотрение судебного дела
№А56-53193/2017 от 21.07.2017, инстанция не определена. Организация
в роли ответчика, сумма исковых требований 1 636 584 420 775 руб.

Use Grep to Find Files Based on Content

The find command in Linux is great but it can only filter the directory tree according to filename and meta data. To search files based on what they contain you’ll need a tool like grep. Take a look:

This goes through every object in the current directory tree (.) that’s a file (-type f) and then runs grep ” forinstance ” for every file that matches, then prints them on the screen (-print). The curly braces ({}) are a placeholder for those results matched by the Linux find command. The {} go inside single quotes (‘) so that grep isn’t given a misshapen file name. The -exec command is ended with a semicolon (;), which also needs an escape (\;) so that it doesn’t end up being interpreted by the shell.

Before -exec was implemented, xargs would have been used to create the same kind of output:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *