Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>shell find commands bin}} ====== find - Поиск файлов с реальном сканированием. ====== Команда find выполняет просмотр файловой системы для поиска файла, что делает этот инструмент медленным, но эффективным. Для поиска по имени обязательно нужно указывать ключ -name Пример: <code bash> find -name filename.txt</code> По умолчанию find производит поиск рекурсивно в текущем каталоге. ===== type / типы ===== * -type f * -type d ===== Параметры ===== * В параметре поставляет найденные значения -exec <code>{}</code> * Пример: <code>find ./ -name "*.php" -exec rm {} \;</code> ====== Смена кодировки у множества файлов ====== <code bash> for i in *; do iconv -f windows-1251 -t utf-8 "$i" >tmp; mv tmp "$i"; done find . \( -name '*.php' -o -name '*.inc' \) -print or find . -name '*.php' -o -name '*.inc' find . -name "*.php" | while read i; do iconv -f windows-1251 -t utf-8 "$i" >tmp; mv tmp "$i"; done find . -name "*.php" -o -name "*.inc" -o -name "*.module" | while read i; do iconv -f windows-1251 -t utf-8 "$i" >tmp; mv tmp "$i"; done </code> ====== Смена прав у файлов и каталогов ====== ===== Смена прав у каталогов ===== find . -type d -exec chmod 755 {} \; Эта команда рекурсивно пройдется по текущему (точка ".") каталогу и всем его подкаталогам и изменит права на 755 только у каталогов (-type d) <code bash> find . -type f -exec chmod 644 {} \;</code> всем файлам - 644 ===== Смена прав у файлов ===== <code bash> find . -type f -name '*.htm*' -exec chmod 644 {} \;</code> Определенным файлам ====== Рекурсивное удаление по маске ====== Пример рекурсивного удаления всех git репозиториев <code bash> find . -type d -name '.git' -exec rm -R -f {} \;</code> ====== Поиск необходимого контента в файлах ====== <code bash> find ./ -type f -print -name *.php -exec grep 'eval' --color=auto {} \;</code> Поиск бэкдоров или вирусов на сайте ====== Вычислить размер папки, без подпапок ====== <code bash> find . -maxdepth 0 -type d -mindepth 0 -exec du -hs {} \;</code> ====== Удалить большое количество файлов ====== Иногда при удление файлов командой rm, возникает сообщение об ошибке "/bin/rm: Argument list too long." Ниже след команда позволит ее избежать <code bash> find . -type f -name "thumb_*" -print | xargs rm find ./ -type f -name "thumb_*" -exec rm -f {} \; find . -maxdepth 1 -name 'thumb_*' -exec rm -f {} \; find . -maxdepth 1 -name '*.js' -exec rm -f {} \; find . -type f -name '*.gz' -exec rm -R -f {} \;</code> ====== Удалить файлы созданные позднее 3 дней ====== <code bash> find /tmp -mtime +3 -name 'tmp-*' -exec rm -Rf -- {} \;</code> ====== Поиск каталога ====== <code bash> find / -type d -name "basic"</code> ====== Замена таба на 4 пробела ====== <code bash> find . -type f -exec sed -i.orig 's/\t/ /g' {} +</code> ====== Отображение всех путей вложенных папок ====== <code bash> $ export FINDPATH="/var/lib" $ DEPTH=$(( $(find $FINDPATH -type d | sed 's|[^/]||g' | sort | tail -n1 | egrep -i -o / | wc -l) - $(echo $FINDPATH | sed 's|[^/]||g' | sort | tail -n1 | egrep -i -o / | wc -l) )) $ find $FINDPATH -mindepth $DEPTH -maxdepth $DEPTH -type d </code>СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal