- How to Find Files in Linux Using the Command Line
- Find a File in Linux by Name or Extension
- Using Common find Commands and Syntax to Find a File in Linux
- Basic Examples
- Options and Optimization for find
- Find a File in Linux by Modification Time
- Use grep to Find a File in Linux Based on Content
- How to Find and Process a File in Linux
- How to Find and Delete a File in Linux
- More Information
- Linux find configuration files
How to Find Files in Linux Using the Command Line
When you have to find a file in Linux, it’s sometimes not as easy as finding a file in another operating system. This is especially true if you are running Linux without a graphical user interface and need to rely on the command line. This article covers the basics of how to find a file in Linux using the CLI. The find command in Linux is used to find a file (or files) by recursively filtering objects in the file system based on a simple conditional mechanism. You can use the find command to search for a file or directory on your file system. By using the -exec flag ( find -exec ), files can be found and immediately processed within the same command.
Find a File in Linux by Name or Extension
Use find from the command line to locate a specific file by name or extension. The following example searches for *.err files in the /home/username/ directory and all sub-directories:
Using Common find Commands and Syntax to Find a File in Linux
find expressions take the following form:
- The options attribute will control the find process’s behavior and optimization method.
- The starting/path attribute will define the top-level directory where find begins filtering.
- The expression attribute controls the tests that search the directory hierarchy to produce output.
Consider the following example command:
This command enables the maximum optimization level (-O3) and allows find to follow symbolic links ( -L ). find searches the entire directory tree beneath /var/www/ for files that end with .html .
Basic Examples
Command | Description |
---|---|
find . -name testfile.txt | Find a file called testfile.txt in current and sub-directories. |
find /home -name *.jpg | Find all .jpg files in the /home and sub-directories. |
find . -type f -empty | Find an empty file within the current directory. |
find /home -user exampleuser -mtime -7 -iname «.db» | Find all .db files (ignoring text case) modified in the last 7 days by a user named exampleuser. |
Options and Optimization for find
The default configuration for find will ignore symbolic links (shortcut files). If you want find to follow and return symbolic links, you can add the -L option to the command, as shown in the example above.
find optimizes its filtering strategy to increase performance. Three user-selectable optimization levels are specified as -O1 , -O2 , and -O3 . The -O1 optimization is the default and forces find to filter based on filename before running all other tests.
Optimization at the -O2 level prioritizes file name filters, as in -O1 , and then runs all file-type filtering before proceeding with other more resource-intensive conditions. Level -O3 optimization allows find to perform the most severe optimization and reorders all tests based on their relative expense and the likelihood of their success.
Command | Description |
---|---|
-O1 | (Default) filter based on file name first. |
-O2 | File name first, then file type. |
-O3 | Allow find to automatically re-order the search based on efficient use of resources and likelihood of success. |
-maxdepth X | Search current directory as well as all sub-directories X levels deep. |
-iname | Search without regard for text case. |
-not | Return only results that do not match the test case. |
-type f | Search for files. |
-type d | Search for directories. |
Find a File in Linux by Modification Time
The find command contains the ability to filter a directory hierarchy based on when the file was last modified:
The first command returns a list of all files in the entire file system that end with the characters conf and modified in the last seven days. The second command filters exampleuser user’s home directory for files with names that end with the characters conf and modified in the previous three days.
Use grep to Find a File in Linux Based on Content
The find command can only filter the directory hierarchy based on a file’s name and metadata. If you need to search based on the file’s content, use a tool like grep . Consider the following example:
This searches every object in the current directory hierarchy ( . ) that is a file ( -type f ) and then runs the command grep «example» for every file that satisfies the conditions. The files that match are printed on the screen ( -print ). The curly braces ( <> ) are a placeholder for the find match results. The <> are enclosed in single quotes ( ‘ ) to avoid handing grep a malformed file name. The -exec command is terminated with a semicolon ( ; ), which should be escaped ( \; ) to avoid interpretation by the shell.
How to Find and Process a File in Linux
The -exec option runs commands against every object that matches the find expression. Consider the following example:
This filters every object in the current hierarchy ( . ) for files named rc.conf and runs the chmod o+r command to modify the find results’ file permissions.
The commands run with the -exec are executed in the find process’s root directory. Use -execdir to perform the specified command in the directory where the match resides. This may alleviate security concerns and produce a more desirable performance for some operations.
The -exec or -execdir options run without further prompts. If you prefer to be prompted before action is taken, replace -exec with -ok or -execdir with -okdir .
How to Find and Delete a File in Linux
To delete the files that end up matching your search, you can add -delete at the end of the expression. Do this only when you are positive the results will only match the files you wish to delete.
In the following example, find locates all files in the hierarchy starting at the current directory and fully recursing into the directory tree. In this example, find will delete all files that end with the characters .err :
More Information
You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.
This page was originally published on Monday, October 25, 2010.
Источник
Linux find configuration files
Информация взята из [1].
/etc/profile | RHL, FBSD | Системные настройки окружения — скрипт, выполняющийся при старте системы. |
/dev/MAKEDEV | RHL | Файл /dev/MAKEDEV является скриптом, написанным системным администратором. Этот создает только файлы локальных устройств или ссылки на них, такие как нестандартные драйверы устройств. |
/etc/aliases | RHL, FBSD | Псевдонимы имен пользователей, соответствующие никнеймам для e-mail. |
/etc/bootptab | Конфигурация демона сервера BOOTP. | |
/etc/crontab | RHL, FBSD | Список команд и времени их выполнения для запуска (назначенные задания для демона cron). |
/etc/dhcpd.conf | Файл конфигурации для демона сервера DHCP. | |
/etc/ethers | Файл соответствия MAC-адресов IP-адресам (RARP mapping). См. man ethers(5). | |
/etc/exports | RHL | Файл, описывающий экспотированные файловые системы для сервисов NFS. |
/etc/fdprm | RHL | Таблица параметров для floppy-диска. Описывает форматы различных floppy-дисков. Используется setfdprm. |
/etc/filesystems | RHL | Может использоваться для установки последовательности filesystem probe, когда файловые системы монтируются с опцией auto. Параметр nodev указывается для файловых систем, которые не монтируются реально-локально, такие как proc, devpts и системы nfs. |
/etc/fstab | RHL, FBSD | Список файловых систем, автоматически монтируемых при загрузке системы командой mount -a (может эквивалентно использоваться /etc/rc или другой файл, участвующий в автозапуске). |
/etc/group | RHL, FBSD | Файл, описывающий группы пользователей (по аналогии /etc/passwd). |
/etc/groups | Может содержать пароли, которые позволяют пользователю присоединиться к группе. | |
/etc/gshadow | RHL | Используется для хранения пароля группы и информацию group administrator password для теневых паролей. |
/etc/host.conf | RHL, FBSD, ASPL | Указывает, каким образом должны разрешаться имена хостов. Список опций определителя (resolver) адресов. |
/etc/hosts | RHL, FBSD, ASPL | Список хостов для преобразования имен в IP-адреса (обычно нужно для хостов локальной сети, о которых не знает система DNS). |
/etc/HOSTNAME | Задает имя для рабочей станции. Используется для поддержки старых программ, которые сохраняют имя хоста в файле /etc/sysconfig/network. | |
/etc/inittab | RHL | Конфигурационный файл для процесса init, управляющий ходом уровней загрузки (startup run levels) — указывает скрипты, которые запускаются на каждом уровне. |
/etc/inetd.conf | FBSD | Настраивает службы, которые обрабатываются демоном inetd. |
/etc/issue | RHL | Вывод getty перед выдачей приглашения логина (login prompt). Описание приглашающего сообщения (welcoming message). |
/etc/issue.net | RHL | Вывод для сетевых логинов (версия LINUX). |
/etc/ld.so.conf | RHL | Конфигурационный файл ld.so, run time linker. |
/etc/lilo.conf | Конфигурационный файл для LILO (LInux LOader, начальный загрузчик операционных систем). | |
/etc/limits | Ограничения пользовательских ресурсов, когда установлена система shadow passwords. | |
/etc/localtime | RHL, FBSD | В Debian здесь хранится линк на информацию о временнОй зоне системы. У меня на Red Hat 4 команда more /etc/localtime выдавала кракозябрики — походу это какой-то двоичный файл. |
/etc/login.defs | RHL | Устанавливает пользовательские опции (user login features) на системах, где работает shadow passwords. |
/etc/logrotate.conf | RHL | Настраивает ротацию логов (управление логами, их архивирование). |
/etc/magic | Конфигурационный файл для типов файлов. Содержит описания различных форматов файлов для командной оболочки. Почему-то на Red Hat 4 я такого файла не нашел, зато были похожие файлы /etc/mime-magic и /usr/share/magic | |
/etc/motd | RHL, FBSD | Сообщение дня (message of the day), автоматически выводящееся при успешном логине. |
/etc/mtab | RHL | Список смонтированных файловых систем в настоящий момент времени. Настраивается скриптом загрузки и обновляется командой mount. |
/etc/named.conf | Используется серверами доменных имен, DNS (named). | |
/etc/networks | FBSD | Список имен и адресов сетей, как ваших собственных, так и других. Связывает доменные имена с адресами сетей. Используется командой route. |
/etc/nologin, /sbin/nologin | RHL, FBSD | Если этот файл существует, то запрещен логин всех пользователей, кроме root. Обычно создается, когда система уходит в отключение. |
/etc/nsswitch.conf | RHL, FBSD | Конфигурационный файл name service switch. |
/etc/passwd | RHL, FBSD | База данных пользователей с полями, определяющий логин (username), реальное имя, домашний каталог (home directory), зашифрованный пароль (encrypted password, а точнее — хеш от него, вычисленный по известному алгоритму, например MD5) и другую информацию по каждому пользователю. |
/etc/printcap | RHL, FBSD | Конфигурационный файл для принтеров. |
/etc/profile | RHL, FBSD | Файл, выполняемый шеллом Bourne или C при логине пользователя или загрузке системы. Это позволяет администратору системы настроить глобальные установки по умолчанию для каждого пользователя отдельно. |
/etc/protocols | RHL, FBSD, ASPL | Описывает протоколы Internet DARPA, доступные из подсистемы TCP/IP. Привязывает номера ID протокола (порт) к именам протоколов. |
/etc/rc или /etc/rc.d или /etc/rc?.d | RHL, FBSD | Скрипты или директории со скриптами, которые запускаются при загрузке системы или когда меняется уровень процесса загрузки. |
/etc/rc.d/rc0.d | Содержит файлы, упраляющие уровнем загрузки 0 (run level 0). Обычно эти файлы являются мягкими файловыми ссылками (softlink files). | |
/etc/rc.d/rc1.d | RHL | Содержит файлы, упраляющие уровнем загрузки 1 (run level 1). Скрипты, начинающиеся с S нужны для старта (Start), а начинающиеся с K — для останова (Kill). |
/etc/rc.d/rc.sysinit | RHL | Процесс init запускает этот файл при своем старте. |
/etc/rc.d/init.d/inet | Сценарий, конфигурирующий при начальной загрузке сетевой интерфейс. | |
/etc/resolv.conf | RHL, FBSD, ASPL | Настраивает распознаватель имен (name resolver) — здесь указываются адрес (или адреса), сервера имен (DNS) и ваше доменное имя. Список имен серверов имен, IP-адресов (поле Name-server) и имен доменов, по которым можно найти удаленные системы (поле Search). |
/etc/securetty | RHL | Идентифицирует защищенные терминалы (secure terminals), с которых администратору root можно войти в систему (log in). |
/etc/services | RHL, FBSD, ASPL | Перечисляет сетевые сервисы, которые система поддерживает. |
/etc/shadow | RHL | Файл shadow password на системах, где установлено ПО shadow password software. Shadow passwords перемещают move файлы с зашифрованными паролями из /etc/passwd в /etc/shadow который может читать только root. |
/etc/shadow.group | Системы с установленным ПО shadow passwords могут иметь этот файл. | |
/etc/shells | RHL, FBSD | Список доверяемых шеллов (trusted shells). Команда chsh позволяет пользователям изменить свой логин-шеллна шелл, который перечислен только в этом файле. |
/etc/skel/.profile | Может использоваться администратором для установки переменной окружения редактора (editor environment variable) для того, чтобы сделать некоторые редакторы дружественными для новых пользователей. | |
/etc/sudoers | RHL | Список пользователей со специальными привилегиями для команд, которые они могут выполнять. |
/etc/smb.conf или /etc/samba/smb.conf | RHL | Конфиг для настроек сервисов Samba (сетевая стистема обмена файлами Windows). |
/etc/sysconfig/amd | Используется для конфигурирования демона автомонтирования (auto mount daemon). | |
/etc/sysconfig/clock | RHL | Используется для конфигурирования системных часов (system clock) на универсальное (Universal) или локальное время (local time) и установки некоторых других параметров часов. |
/etc/sysconfig/i18n | RHL | Управляет настройками системного шрифта. |
/etc/sysconfig/init | RHL | Этот файл используется для установки некоторых характеристик терминала и переменных окружения (environment variables). |
/etc/sysconfig/keyboard | RHL | Используется для конфигурирования клавиатуры. |
/etc/sysconfig/mouse | RHL | Используется для конфигурирования мыши. |
/etc/sysconfig/pcmcia | RHL | Используется для конфигурирования сетевых карт pcmcia. |
/etc/rc.d/routed, /usr/src/etc/rc.d/routed | FBSD | Настраивает политики динамической маршрутизации. |
/etc/syslog.conf | RHL, FBSD | Конфигурационный файл для демона syslogd. |
/etc/termcap | RHL, FBSD | База данных совместимости терминалов. Описывает управляющие ESC-последовательности (escape sequences), поддерживаемые различными терминалами. См. man-справку по terminfo, termcap, curs_termcap. |
/etc/terminfo | Детализирует ввод/вывод терминала (terminal I/O). | |
/etc/usertty | Этот файл используется для наложения специальных ограничений доступа для пользователей. | |
$HOME/.bashrc | RHL | Алиасы пользователей, модификаторы путей, функции. |
$HOME/.bash_profile | RHL | Содержимое пользовательского окружения (users environment stuff) и автозапускаемые программы. |
$HOME/.bash_logout | RHL | Пользовательские действия, которые выполняются при выходе из системы (logout). |
$HOME/.hushlogin | Когда этот файл существует в домашней папке пользователя, то запрещена проверка почты, печать времени последнего логина и «сообщения дня» в момент, когда пользователь входит в систему. | |
$HOME/.inputrc | Содержит клавиатурные привязки (keybindings) и кое-что еще. | |
$HOME/Xrootenv.0 | Информация о сети и окружении. | |
/proc/cpuinfo | RHL | Информация о типе процессора, о его производителе и быстродействии. |
/proc/devices | RHL | Список устройств, сконфигурированных в ядре, работающем в настоящий момент. |
/proc/dma | RHL | Показывает, какие каналы DMA используются в настоящий момент. |
/proc/filesystems | RHL | Файловые системы, которые сконфигурированы в ядре. Используется для детектирования файловых систем, если файл /etc/filesystems не существует. |
/proc/ioports | RHL | Показывает, какие порты ввода/вывода (I/O ports) находятся в использовании в настоящий момент. |
/proc/interrupts | RHL | Показывает, какие прерывания сейчас используются и насколько часто. |
/proc/kcore | RHL | Образ физической памяти системы. Команда more /proc/kcore выдает сообщение «Operation not permitted». |
/proc/kmsg | RHL | Вывод сообщений ядра, которые перенаправляются в syslog. |
/proc/ksyms или /proc/kallsyms | RHL | Таблица символов ядра (у меня на Red Hat команда more /proc/ksyms почему-то выдавала No such file or directory). |
/proc/loadavg | RHL | Статистика по средней загруженности системы. |
/proc/meminfo | RHL | Информация по использованию памяти — физической и файла подкачки. |
/proc/modules | RHL | Информация о том, какие модули ядра загружены в память в настоящий момент. |
/proc/mounts | RHL | Содержит информацию о файловых системах, смонтированных в настоящее время. Информация сходна с файлом /etc/mtab. |
/proc/net | RHL | Папка, которая содержит статусную информацию о сетевых протоколах. Каждый файл в папке соответствует определенному протоколу (arp, tcp и т. д.). |
/proc/self | RHL | Символическая ссылка на директорию процессов программ, указывающая на /proc. Когда 2 процесса смотрят на proc, они получают разные ссылки. |
/proc/stat | RHL | Разнообразная статистика о системе, например количество ошибок страниц (page faults) с момента начала работы системы. |
/proc/uptime | RHL | Время нахождения системы в рабочем состоянии. |
/proc/version | RHL | Версия ядра. |
/tmp/fvwmrca01339 | Задает FVWM-M4. Содержит информацию о сети, подсистеме Xwindows и другую информацию о настройках. | |
/usr/lib/zoneinfo или /usr/share/zoneinfo | RHL, FBSD | Файлы данных временнОй зоны, которые сохраняет здесь система Debian. |
/var/log/lastlog | RHL, FBSD | Используется finger чтобы сказать пользователю о времени последнего входа в систему. |
/var/log/wtmp | RHL, FBSD | Двоичная информация о пользователях, вошедших в систему. Команда last использует эту информацию. |
/var/run/utmp | RHL, FBSD | Содержит информацию о пользователях, залогиненных в системе в настоящий момент. Команды who и w используют этот файл. |
/var/named/root.hints | ||
/var/named/* | FBSD | Файлы, используемые сревером доменных имен (DNS). Размещение тут опционально, однако здесь нормальное месторасположение этой информации. |
/var/log/btmp | Используется для сохранения информации о неудачных логинах. Этот файл должен быть одинажды создан вручную, чтобы информация начала накапливаться. | |
/var/log/lastlog | RHL, FBSD | Содержит информацию о последнем времени успешного логина в систему. Работает с lastb(1). |
/var/log/maillog | RHL, FBSD | Нормальный системный файл почтового лога. |
/var/log/messages | RHL, FBSD | Основной файл лога системных сообщений. |
/var/log/secure | RHL | Системное отслеживание входов пользователя в систему. Периодически проверяйте этот файл. |
/var/spool/mail | RHL | Место, где обычно хранятся почтовые ящики. Каждому пользователю соответствует свой файл (например, почта root хранится с файле /var/spool/mail/root). Почту также можно посмотреть командой mail. |
/etc/ftpusers | RHL, FBSD | По умолчанию путь и имя для файла ftpusers. В этом файле указываются имена пользователей, которым запрещен вход в систему через ftp. Среди таких пользователей обычно root, daemon, bin, uucp и news. |
Примечание:
RHL == Red Hat Linux 4
FBSD == FreeBSD 6.3
ASPL == ASPLinux 10
Источник