Select Page

20 практических примеров Linux команды find

20 практических примеров Linux команды find

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

Установка программного обеспечения/пакета find.

Для пользователей Ubuntu, Debian

apt-get install findutils

Здесь я объясню некоторые полезные команды find с практическими примерами 1. Найти указанный файл в и в указанной директории. Приведенная ниже команда находит файл “linuxinternetworks.txt” в каталоге “/home/linuxinternetworks”

# find /home/linuxinternetworks -type f -name linuxinternetworks.txt
/home/linuxinternetworks/linuxinternetworks.txt

где “-type f” относится к обычному файлу, “-name” относится к имени файла (с учетом регистра) 2. Найти указанный файл (без учета регистра) и в указанной директории. Приведенная ниже команда находит файл “linuxinternetworks.txt” в каталоге “/home/linuxinternetworks”.

#find /home/linuxinternetworks -type f -iname linuxinternetworks.txt
/home/linuxinternetworks/linuxinternetworks.txt
/home/linuxinternetworks/LINUXINTERNETWORKS.txt

где -iname относится к имени файла (без учета регистра) 3. Найти файлы в настоящем рабочем каталоге

#find $pwd -type f -iname linuxinternetworks.txt
./linuxinternetworks.txt
./LINUXINTERNETWORKS.txt

Вы можете также использовать “.” вместо “$pwd

#find . -type f -iname linuxinternetworks.txt
./linuxinternetworks.txt
./LINUXINTERNETWORKS.txt

Для информации: каталог “/home/linuxinternetworks/” содержит следующие файлы

# ls -l
total 116
drwxr-xr-x 2 root root 4096 Jan 3 20:40 dir1
drwxr-xr-x 2 root root 4096 Jan 3 20:40 dir2
drwxr-xr-x 2 root root 4096 Jan 3 20:40 dir3
drwxr-xr-x 2 root root 4096 Jan 3 20:40 dir4
drwxr-xr-x 2 root root 4096 Jan 3 20:40 dir5
-rw-r–r– 1 root root 0 Jan 3 20:19 lin1.txt
-rw-r–r– 1 root root 0 Jan 3 20:19 lin2.txt
-rw-r–r– 1 root root 0 Jan 3 20:19 lin3.txt
-rw-r–r– 1 root root 0 Jan 3 20:19 lin4.txt
-rw-r–r– 1 root root 0 Jan 3 20:19 lin5.txt
-rw-r–r– 1 root root 45442 Jan 3 20:19 linuxinternetworks.txt
-rw-r–r– 1 root root 45442 Jan 3 20:24 LINUXINTERNETWORKS.txt

4. Найти обычные файлы и в каталоге

# find /home/linuxinternetworks/ -type f
/home/linuxinternetworks/lin4.txt
/home/linuxinternetworks/lin1.txt
/home/linuxinternetworks/dir4/lin4.txt
/home/linuxinternetworks/lin5.txt
/home/linuxinternetworks/dir5/lin5.txt
/home/linuxinternetworks/linuxinternetworks.txt
/home/linuxinternetworks/lin3.txt
/home/linuxinternetworks/lin2.txt
/home/linuxinternetworks/dir2/lin2.txt
/home/linuxinternetworks/dir3/lin3.txt
/home/linuxinternetworks/LINUXINTERNETWORKS.txt
/home/linuxinternetworks/dir1/lin1.txt

5. Найти каталоги и в каталоге

# find /home/linuxinternetworks/ -type d
/home/linuxinternetworks/
/home/linuxinternetworks/dir4
/home/linuxinternetworks/dir5
/home/linuxinternetworks/dir2
/home/linuxinternetworks/dir3
/home/linuxinternetworks/dir1

6. Найти файлы символов в каталоге “/dev

# find /dev/ -type c
/dev/hidraw0
/dev/sg2
/dev/ttyUSB4
/dev/ttyUSB3
/dev/ttyUSB2
/dev/ttyUSB1
/dev/ttyUSB0
……
……
……

7. Найти файлы сокетов в каталоге “/dev

# find /dev/ -type s
/dev/log

8. Найти блок файлы в каталоге “/dev”

# find /dev/ -type b
/dev/sdb
/dev/sr0
/dev/sda11
/dev/sda10
/dev/sda9
/dev/sda8
/dev/sda7
/dev/sda6
/dev/sda5
/dev/sda3
/dev/sda2
/dev/sda1
….
….
….

9. Выполнение команды после нахождения файла или директории

# find / -type f -user syslog -exec ls -l {} ;
-rw-r—– 1 syslog adm 24574 Dec 5 22:47 /var/log/syslog.7.gz
-rw-r—– 1 syslog adm 53956 Dec 8 17:17 /var/log/syslog.6.gz
-rw-r—– 1 syslog adm 505 Dec 28 19:00 /var/log/mail.log.2.gz
-rw-r—– 1 syslog adm 512175 Dec 31 22:11 /var/log/kern.log.1
-rw-r—– 1 syslog adm 65532 Dec 11 21:48 /var/log/syslog.5.gz
-rw-r—– 1 syslog adm 1494 Jan 3 19:06 /var/log/mail.log
-rw-r—– 1 syslog adm 519 Dec 8 16:58 /var/log/mail.log.3.gz
-rw-r—– 1 syslog adm 56587 Dec 31 22:17 /var/log/auth.log.1
-rw-r—– 1 syslog adm 2807 Dec 2 20:17 /var/log/auth.log.4.gz
-rw-r—– 1 syslog adm 135793 Dec 2 20:13 /var/log/kern.log.4.gz
-rw-r—– 1 syslog adm 3160 Dec 8 17:17 /var/log/auth.log.3.gz

где опция “-exec ” используется для выполнения команды после завершения поиска

10. Найти имя файла на основе последних дней доступа. Например, доступны файлы за 4 дня.

# date
Fri Jan 3 21:09:09 IST 2014
# find / -type f -used 2 -exec ls -l {} ;
find: `/home/sathishkumar/.gvfs’: Permission denied
-rw-rw-r– 1 sathishkumar sathishkumar 1128 Dec 29 22:32 /home/sathishkumar/.cache/ubuntuone/log/syncdaemon-exceptions.log.2013-12-29_22-32-12
-rw-rw-r– 1 sathishkumar sathishkumar 4544 Dec 28 21:53 /home/sathishkumar/.cache/ubuntuone/log/credentials.log.2013-12-28_21-53-35
-rw-rw-r– 1 sathishkumar sathishkumar 4167 Dec 29 22:47 /home/sathishkumar/.cache/ubuntuone/log/syncdaemon.log.2013-12-29_22-47-11
-rw-rw-r– 1 sathishkumar sathishkumar 14199 Dec 29 19:32 /home/sathishkumar/.cache/ubuntuone/log/syncdaemon.log.2013-12-29_19-32-44
-rw-rw-r– 1 sathishkumar sathishkumar 2272 Dec 11 21:12 /home/sathishkumar/.cache/ubuntuone/log/credentials.log.2013-12-11_21-12-34

11. Найти файлы, основанные на имени пользователя. Вот мое имя пользователя “postfix

# find / -type f -user postfix -exec ls -l {} ;
-rw——- 1 postfix postfix 33 Jan 3 19:05 /var/lib/postfix/master.lock
-rw——- 1 postfix postfix 8192 Dec 29 18:14 /var/lib/postfix/smtp_scache.db
-rw——- 1 postfix postfix 1024 Dec 29 19:32 /var/lib/postfix/prng_exch
-rw——- 1 postfix postfix 8192 Dec 29 18:14 /var/lib/postfix/smtpd_scache.db

12. Найти файл символической ссылки в каталоге

#find /proc/ -xtype c -exec ls -l {} ;
lrwx—— 1 root root 64 Jan 3 20:45 /proc/1/task/1/fd/0 -> /dev/null
lrwx—— 1 root root 64 Jan 3 20:45 /proc/1/task/1/fd/1 -> /dev/null
lrwx—— 1 root root 64 Jan 3 20:45 /proc/1/task/1/fd/2 -> /dev/null
lrwx—— 1 root root 64 Jan 3 20:45 /proc/1/task/1/fd/15 -> /dev/ptmx
lrwx—— 1 root root 64 Jan 3 20:45 /proc/1/task/1/fd/22 -> /dev/ptmx
lrwx—— 1 root root 64 Jan 3 20:45 /proc/1/fd/0 -> /dev/null
lrwx—— 1 root root 64 Jan 3 20:45 /proc/1/fd/1 -> /dev/null
lrwx—— 1 root root 64 Jan 3 20:45 /proc/1/fd/2 -> /dev/null

13. Найти все “.txt” файлы в каталоге

# find -type f -name “*.txt”
./lin4.txt
./lin1.txt
./dir4/lin4.txt
./lin5.txt
./dir5/lin5.txt
./linuxinternetworks.txt
./lin3.txt
./lin2.txt
./dir2/lin2.txt
./dir3/lin3.txt
./LINUXINTERNETWORKS.txt
./dir1/lin1.txt

14. В этой команде я ограничиваю поиск в каталоге, используя опцию “maxdepth”

#find /proc -maxdepth 4 -name cpuset
/proc/14976/task/14976/cpuset
/proc/14976/cpuset
/proc/15885/task/15885/cpuset
/proc/15885/cpuset
/proc/15899/task/15899/cpuset
/proc/15899/cpuset
/proc/15911/task/15911/cpuset
/proc/15911/cpuset

Здесь “-maxdepth 4″ ищет содержание во вложенных 4 директориях в /proc. “-maxdepth 0″ означает только применять тесты и действия, которые аргументированы командной строкой.

15. Найти все файлы, имеющие 0755 разрешение

#find /home/linuxinternetworks -type f -perm 0755 -exec ls -l {} ;
-rwxr-xr-x 1 root root 0 Jan 3 20:19 /home/linuxinternetworks/lin1.txt
-rwxr-xr-x 1 root root 0 Jan 3 20:19 /home/linuxinternetworks/lin3.txt

16. Найти все файлы, имеющие 0644 разрешение

# find /home/linuxinternetworks -type f -perm 0644 -exec ls -l {} ;
-rw-r–r– 1 root root 0 Jan 3 20:19 /home/linuxinternetworks/lin4.txt
-rw-r–r– 1 root root 0 Jan 3 20:40 /home/linuxinternetworks/dir4/lin4.txt
-rw-r–r– 1 root root 0 Jan 3 20:19 /home/linuxinternetworks/lin5.txt
-rw-r–r– 1 root root 0 Jan 3 20:40 /home/linuxinternetworks/dir5/lin5.txt

17. Найти все каталоги, имеющие 0755 разрешение

# find /home/linuxinternetworks -type d -perm 0755
/home/linuxinternetworks
/home/linuxinternetworks/dir4
/home/linuxinternetworks/dir5
/home/linuxinternetworks/dir3

18. Найти пример с AND оператор

# ls -l
total 116
drwxr-xr– 2 root root 4096 Jan 3 20:40 dir1
drwxr-xr– 2 root root 4096 Jan 3 20:40 dir2
drwxr-xr-x 2 root root 4096 Jan 3 20:40 dir3
drwxr-xr-x 2 root root 4096 Jan 3 20:40 dir4
drwxr-xr-x 2 root root 4096 Jan 3 20:40 dir5
-rwxr-xr-x 1 root root 0 Jan 3 20:19 lin1.txt
-rw-r–r– 1 root root 0 Jan 3 20:19 lin2.txt
-rwxr-xr-x 1 root root 0 Jan 3 20:19 lin3.txt
-rw-r–r– 1 root root 0 Jan 3 20:19 lin4.txt
-rw-r–r– 1 root root 0 Jan 3 20:19 lin5.txt
-rw-r–r– 1 root root 45442 Jan 3 20:19 linuxinternetworks.txt
-rw-r–r– 1 root root 45442 Jan 3 20:24 LINUXINTERNETWORKS.txt
# find . -type f -name “lin*.txt” -and -name “linux*.txt” -exec ls -l {} ;
-rw-r–r– 1 root root 45442 Jan 3 20:19 ./linuxinternetworks.txt

19. Найти пример с оператором OR

# find . -name “lin*.txt” -or -name “dir*”;
./lin4.txt
./lin1.txt
./dir4
./dir4/lin4.txt
./lin5.txt
./dir5
./dir5/lin5.txt
./linuxinternetworks.txt
./lin3.txt
./lin2.txt
./dir2
./dir2/lin2.txt
./dir3
./dir3/lin3.txt
./dir1
./dir1/lin1.txt

20. Найти пример с NOT оператор

# find . -not -name “lin*”;
.
./dir4
./dir5
./dir2
./dir3
./LINUXINTERNETWORKS.txt
./dir1

About The Author

Leave a reply

Ваш адрес email не будет опубликован.