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
Свежие комментарии