Поиск файлов в Linux (find)

Для поиска файлов применяется команда find. Рассмотрим работу команды на примере следующего дерева каталогов:

user@debian-server:~/test$ tree
.
├── data
│   ├── data1.dat
│   ├── data2.dat
│   └── readme.txt
├── data.dat
├── file1.txt
└── file2.txt

2 directories, 6 files
1
2
3
4
5
6
7
8
9
10
11

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

user@debian-server:~/test$ find
.
./file1.txt
./data.dat
./file2.txt
./data
./data/data2.dat
./data/readme.txt
./data/data1.dat
1
2
3
4
5
6
7
8
9

С помощью параметров можно указывать фильтры для поиска. Фильтр по имени — параметр -name.

user@debian-server:~/test$ find -name readme.txt
./data/readme.txt
1
2

Можно искать по маске

user@debian-server:~/test$ find -name '*.dat'
./data.dat
./data/data2.dat
./data/data1.dat
1
2
3
4

Можно искать с указанием размера, символ c означает, единицу измерения — байты.

user@debian-server:~/test$ find -size 6c
./data/data2.dat
user@debian-server:~/test$ ls -l ./data/data2.dat
-rw-r--r-- 1 user user 6 ноя 30 13:38 ./data/data2.dat
1
2
3
4

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

user@debian-server:~/test$ find -type f
./file1.txt
./data.dat
./file2.txt
./data/data2.dat
./data/readme.txt
./data/data1.dat
1
2
3
4
5
6
7

С помощью параметра -exec можно выполнить определенное действие над всеми найденными файлами. После -exec должна идти команда, в том месте где должно стоять имя файла символы {} а в конце команды \;.

user@debian-server:~/test$ find -size 6c -exec file {} \;
./data/data2.dat: ASCII text
1
2
Последниее изменение: 30.11.2023, 18:54:11