- Команда find в Linux – мощный инструмент сисадмина
- Поиск по имени
- Поиск по типу файла
- Поиск по размеру файла
- Единицы измерения файлов:
- Поиск пустых файлов и каталогов
- Поиск времени изменения
- Поиск по времени доступа
- Поиск по имени пользователя
- Поиск по набору разрешений
- Операторы
- Действия
- -delete
- -exec:
- Заключение
- 6 Popular Examples to Find Files owned by Group(s) in Linux/Unix
- Unix/Linux Find Files and Directories Owned By Group(s)
- Example 1: How to Find a Particular File Owned by Group in Linux/Unix
- Example 2: How to Find All the Files and Directories Owned by Group
- Example 3: How to Only Find the Files Owned by a Particular Group
- Example 4: How to Find All .txt Files owned by a Particular Group
- Example 5: How to Find all the directories owned by a Particular Group
- Example 6: How to Find a File Owned by a Particular User and a Particular Group
Команда find в Linux – мощный инструмент сисадмина
Иногда критически важно быстро найти нужный файл или информацию в системе. Порой можно ограничиться стандартами функциями поиска, которыми сейчас обладает любой файловый менеджер, но с возможностями терминала им не сравниться.
Команда find – это невероятно мощный инструмент, позволяющий искать файлы не только по названию, но и по:
Данная команда будет очень полезна системным администраторам для:
Команда find в Linux производит поиск файлов и папок на основе заданных вами критериев и позволяет выполнять действия с результатами поиска.
Синтаксис команды find:
$ find directory-to-search criteria action
- directory-to-search (каталог поиска) – это отправной каталог, с которой find начинает поиск файлов по всем подкаталогам, которые находятся внутри. Если не указать путь, тогда поиск начнется в текущем каталоге;
- criteria (критерий) – критерий, по которым нужно искать файлы;
- action (действие) – что делать с каждым найденным файлом, соответствующим критериям.
Поиск по имени
Следующая команда ищет файл s.txt в текущем каталоге:
- . (точка) – файл относится к нынешнему каталогу
- -name – критерии по которым осуществляется поиск. В данном случае поиск по названию файла.
В данном случае критерий -name учитывает только символы нижнего регистра и файл S.txt не появиться в результатах поиска. Чтобы убрать чувствительность к регистру необходимо использовать –iname.
$ find . -iname "s.txt" ./s.txt ./S.txt
Для поиска всех изображений c расширением .png нужно использовать шаблон подстановки *.png:
$ find . -name "*.png" ./babutafb.png ./babutafacebook.png ./Moodle2.png ./moodle.png ./moodle/moodle1.png ./genxfacebook.png
Можно использовать название каталога для поиска. Например, чтобы с помощью команды find найти все png изображения в каталоге home:
$ find /home -name "*.png" find: `/home/babuta/.ssh': Permission denied /home/vagrant/Moodle2.png /home/vagrant/moodle.png /home/tisha/hello.png find: `/home/tisha/testfiles': Permission denied find: `/home/tisha/data': Permission denied /home/tisha/water.png find: `/home/tisha/.cache': Permission denied
Если выдает слишком много ошибок в отказе разрешения, тогда можно добавить в конец команды – 2> /dev/null. Таким образом сообщения об ошибках будут перенаправляться по пути dev/null, что обеспечит более чистую выдачу.
find /home -name "*.jpg" 2>/dev/null /home/vagrant/Moodle2.jpg /home/vagrant/moodle.jpg /home/tisha/hello.jpg /home/tisha/water.jpg
Поиск по типу файла
Критерий -type позволяет искать файлы по типу, которые бывают следующих видов:
- f – простые файлы;
- d – каталоги;
- l – символические ссылки;
- b – блочные устройства (dev);
- c – символьные устройства (dev);
- p – именованные каналы;
- s – сокеты;
Например, указав критерий -type d будут перечислены только каталоги:
$ find . -type d . ./.ssh ./.cache ./moodle
Поиск по размеру файла
Допустим, что вам необходимо найти все большие файлы. Для таких ситуаций подойдет критерий -size.
- «+» — Поиск файлов больше заданного размера
- «-» — Поиск файлов меньше заданного размера
- Отсутствие знака означает, что размер файлов в поиске должен полностью совпадать.
В данном случае поиск выведет все файлы более 1 Гб (+1G).
$ find . -size +1G ./Microsoft_Office_16.29.19090802_Installer.pkg ./android-studio-ide-183.5692245-mac.dmg
Единицы измерения файлов:
Поиск пустых файлов и каталогов
Критерий -empty позволяет найти пустые файлы и каталоги.
$ find . -empty ./.cloud-locale-test.skip ./datafiles ./b.txt . ./.cache/motd.legal-displayed
Поиск времени изменения
Критерий -cmin позволяет искать файлы и каталоги по времени изменения. Для поиска всех файлов, измененных за последний час (менее 60 мин), нужно использовать -60:
$ find . -cmin -60 . ./a.txt ./datafiles
Таким образом можно найти все файлы в текущем каталоге, которые были созданы или изменены в течение часа (менее 60 минут).
Для поиска файлов, которые наоборот были изменены в любое время кроме последнего часа необходимо использовать +60.
Поиск по времени доступа
Критерий -atime позволяет искать файлы по времени последнего доступа.
Таким образом можно найти файлы, к которым не обращались последние полгода (180 дней).
Поиск по имени пользователя
Опция –user username дает возможность поиска всех файлов и каталогов, принадлежащих конкретному пользователю:
$ find /home -user tisha 2>/dev/null
Таким образом можно найти все файлы пользователя tisha в каталоге home, а 2>/dev/null сделает выдачу чистой без ошибок в отказе доступа.
Поиск по набору разрешений
Критерий -perm – ищет файлы по определенному набору разрешений.
Поиск файлов с разрешениями 777.
Операторы
Для объединения нескольких критериев в одну команду поиска можно применять операторы:
Например, чтобы найти файлы размером более 1 Гбайта пользователя tisha необходимо ввести следующую команду:
$ find /home -user tisha -and -size +1G 2>/dev/null
Если файлы могут принадлежать не только пользователю tisha, но и пользователю pokeristo, а также быть размером более 1 Гбайта.
$ find /home \( -user pokeristo -or -user tisha \) -and -size +1G 2>/dev/null
Перед скобками нужно поставить обратный слеш «\».
Действия
К команде find можно добавить действия, которые будут произведены с результатами поиска.
- -delete — Удаляет соответствующие результатам поиска файлы
- -ls — Вывод более подробных результатов поиска с:
- Размерами файлов.
- Количеством inode.
-delete
Полезен, когда необходимо найти и удалить все пустые файлы, например:
Перед удалением лучше лишний раз себя подстраховать. Для этого можно запустить команду с действием по умолчанию -print.
-exec:
Данное действие является особенным и позволяет выполнить команду по вашему усмотрению в результатах поиска.
- command – это команда, которую вы желаете выполнить для результатов поиска. Например:
- rm
- mv
- cp
С помощью –exec можно написать альтернативу команде –delete и применить ее к результатам поиска:
Другой пример использования действия -exec:
$ find . -name "*.jpg" -exec cp <> /backups/fotos \;
Таким образом можно скопировать все .jpg изображения в каталог backups/fotos
Заключение
Команду find можно использовать для поиска:
- Файлов по имени.
- Дате последнего доступа.
- Дате последнего изменения.
- Имени пользователя (владельца файла).
- Имени группы.
- Размеру.
- Разрешению.
- Другим критериям.
С полученными результатами можно сразу выполнять различные действия, такие как:
Команда find может сильно облегчить жизнь системному администратору, а лучший способ овладеть ей – больше практиковаться.
6 Popular Examples to Find Files owned by Group(s) in Linux/Unix
In this article, I will take you through 6 Popular Examples to find Find Files and Directories Owned by Group(s) in Linux/Unix based Systems. In many occasions you might have noticed that you need to find all the files owned by Group to perform some specific task. This can easily be possible by using find command in Linux/Unix based systems. You can even find files based on file name or by using some search pattern based on your requirements. We will understand how this can be done by using various examples.
Unix/Linux Find Files and Directories Owned By Group(s)
Example 1: How to Find a Particular File Owned by Group in Linux/Unix
If you want to find a particular file owned by a particular group then you can use below find command. In this example, we are looking for hello.txt file owned by group centos using find / -group centos -name hello.txt command.
[root@localhost ~]# find / -group centos -name hello.txt /root/hello.txt
/ : Search all the files under / path.
-group : File is owned by group. More can be checked on Find command Man Page.
-name : Base of file name (the path with the leading directories removed) matches shell pattern pattern.
Please note that here I am using root user to run all the below commands.You can use any user with sudo access to run all these commands. For more information Please check Step by Step: How to Add User to Sudoers to provide sudo access to the User.
Example 2: How to Find All the Files and Directories Owned by Group
If you want to find all the files and directories owned by a particular group then you need to simply use below find command. In this example, we are looking for all the files and directories owned by group centos using find / -group centos command.
[root@localhost ~]# find / -group centos /root/hello /root/example /root/example/hello.rs /root/example/hello /root/hello.txt /root/example.txt /var/db/sudo/lectured/centos /home/centos /home/centos/.bash_logout /home/centos/file /home/centos/.bash_history /home/centos/example.txt /home/centos/.bash_profile /home/centos/.bashrc /home/centos/output.txt /home/centos/CentOS.ISO /home/centos/.Xauthority
Example 3: How to Only Find the Files Owned by a Particular Group
If you only want to find the files owned by a particular group and not the directories then you need to use -type f option with find command as shown below. In this example, we are only looking for the files owned by group centos using find / -group centos -type f command.
[root@localhost ~]# find / -group centos -type f /root/example/hello.rs /root/example/hello /root/hello.txt /root/example.txt /var/db/sudo/lectured/centos /home/centos/.bash_logout /home/centos/.bash_history /home/centos/example.txt /home/centos/.bash_profile /home/centos/.bashrc /home/centos/output.txt /home/centos/CentOS.ISO /home/centos/.Xauthority
-type : File is of block, character, regular file, symbolic link etc. More can be checked on Find command Man Page.
There is another way which you can use to find all the files owned by a particular group. In this way, you need to use wildcard character( * ) with -name option to search all the files under / partition.
[root@localhost ~]# find / -group centos -type f -name "*" /root/example/hello.rs /root/example/hello /root/hello.txt /root/example.txt /var/db/sudo/lectured/centos /home/centos/.bash_logout /home/centos/.bash_history /home/centos/example.txt /home/centos/.bash_profile /home/centos/.bashrc /home/centos/output.txt /home/centos/CentOS.ISO /home/centos/.Xauthority /root/example/hello.rs /root/example/hello /root/hello.txt /root/example.txt /var/spool/mail/centos /home/centos/.bash_logout /home/centos/.bash_history /home/centos/example.txt /home/centos/.bash_profile /home/centos/.bashrc /home/centos/output.txt /home/centos/CentOS.ISO /home/centos/.Xauthority
Example 4: How to Find All .txt Files owned by a Particular Group
If you want to find a certain type of files instead of looking for all the files then you can use below find command in Linux. In this example, we are looking for all .txt files owned by group centos using find / -group centos -name «*.txt» command.
[root@localhost ~]# find / -group centos -name "*.txt" /root/hello.txt /root/example.txt /home/centos/example.txt /home/centos/output.txt
Example 5: How to Find all the directories owned by a Particular Group
If you want to find all the directories owned by a particular group then there are two ways you can find that. One way is by using below find command where you don’t have to specify the -name option to search all the directories by default. In this example we are searching all the directories owned by group centos using find / -group centos -type d command.
[root@localhost ~]# find / -group centos -type d /root/example /home/centos /home/centos/file
The other way you can also use to find all the directories owned by a Specific group using below find command where you can specify star(*) with -name option to search all the directories. Both commands can be used interchangeably.
[root@localhost ~]# find / -group centos -type d -name "*" /root/example /home/centos /home/centos/file
Example 6: How to Find a File Owned by a Particular User and a Particular Group
If you want to find a file owned by a particular user and a particular group then you need to use both -user and -group option with find command as shown below. In this example, we are searching for all the files owned by user root and group centos using find / -user root -group centos -type f command.
[root@localhost ~]# find / -user root -group centos -type f /var/db/sudo/lectured/centos
Popular Recommendations:-