Меню Рубрики

Linux поиск и удаление файлов

linux-notes.org

Как найти и удалить файлы старше конкретной даты в Linux

Хочу в этой теме «Как найти и удалить файлы старше конкретной даты в Linux» рассказать как можно найти и удалить определенные файлы по дате в ОС Linux таких как Debian, Ubuntu или Redhat, Centos. На готовых примера покажу что и как нужно делать.

1. Посмотрим список всех файлов в папке с датой изменения, для этого стоит выполнить команду:

пример использование команды ls -lah для вывода подробной информации о файлах

2. Чтобы узнать сегодняшнюю дату, нужно выполнить:

3. Команда что выше не вывела полную дату, можно это исправить:

4. Допустим нужно найти файлы и удалить их по определенной дате.

Если нужно найти все файлы свыше 3 дня и после чего удалить их:

Если нужно найти все файлы свыше 90 дней и после чего удалить их:

Если нужно найти все файлы свыше 365 дней и после чего удалить их:

Если нужно найти все файлы свыше 100 дней и после чего удалить их:

Удаление файлов старше N дней

Ключи:
-name — искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки.
-type — тип искомого: f=файл, d=каталог, l=ссылка (link).
-user — владелец: имя пользователя или UID.
-group — владелец: группа пользователя или GID.
-perm — указываются права доступа.
-size — размер: указывается в 512-байтных блоках или байтах (признак байтов — символ «c» за числом).
-atime — время последнего обращения к файлу.
-ctime — время последнего изменения владельца или прав доступа к файлу.
-mtime — время последнего изменения файла.
-newer другой_файл — искать файлы созданные позже, чем другой_файл.
-delete — удалять найденные файлы.
-ls — генерирует вывод как команда ls -dgils.
-print — показывает на экране найденные файлы.
-exec command <> \; — выполняет над найденным файлом указанную команду; обратите внимание на синтаксис.
-ok — перед выполнением команды указанной в -exec, выдаёт запрос.
-depth — начинать поиск с самых глубоких уровней вложенности, а не с корня каталога.
-prune — используется, когда вы хотите исключить из поиска определённые каталоги.
N — количество дней.

Источник

Команда find в Linux

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

В этой статье мы поговорим о поиске с помощью очень мощной команды find Linux, подробно разберем ее синтаксис, опции и рассмотрим несколько примеров.

Основная информация о Find

Find — это одна из наиболее важных и часто используемых утилит системы Linux. Это команда для поиска файлов и каталогов на основе специальных условий. Ее можно использовать в различных обстоятельствах, например, для поиска файлов по разрешениям, владельцам, группам, типу, размеру и другим подобным критериям.

Утилита find предустановлена по умолчанию во всех Linux дистрибутивах, поэтому вам не нужно будет устанавливать никаких дополнительных пакетов. Это очень важная находка для тех, кто хочет использовать командную строку наиболее эффективно.

Команда find имеет такой синтаксис:

find [ папка] [ параметры] критерий шаблон [действие]

Папка — каталог в котором будем искать

Параметры — дополнительные параметры, например, глубина поиска, и т д

Критерий — по какому критерию будем искать: имя, дата создания, права, владелец и т д.

Шаблон — непосредственно значение по которому будем отбирать файлы.

Основные параметры команды find

Я не буду перечислять здесь все параметры, рассмотрим только самые полезные.

  • -P никогда не открывать символические ссылки
  • -L — получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
  • -maxdepth — максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
  • -depth — искать сначала в текущем каталоге, а потом в подкаталогах
  • -mount искать файлы только в этой файловой системе.
  • -version — показать версию утилиты find
  • -print — выводить полные имена файлов
  • -type f — искать только файлы
  • -type d — поиск папки в Linux

Критерии

Критериев у команды find в Linux очень много, и мы опять же рассмотрим только основные.

  • -name — поиск файлов по имени
  • -perm — поиск файлов в Linux по режиму доступа
  • -user — поиск файлов по владельцу
  • -group — поиск по группе
  • -mtime — поиск по времени модификации файла
  • -atime — поиск файлов по дате последнего чтения
  • -nogroup — поиск файлов, не принадлежащих ни одной группе
  • -nouser — поиск файлов без владельцев
  • -newer — найти файлы новее чем указанный
  • -size — поиск файлов в Linux по их размеру

Примеры использования

А теперь давайте рассмотрим примеры find, чтобы вы лучше поняли, как использовать эту утилиту.

1. Поиск всех файлов

Показать все файлы в текущей директории:

2. Поиск файлов в определенной папке

Показать все файлы в указанной директории:

Искать файлы по имени в текущей папке:

Не учитывать регистр при поиске по имени:

3. Ограничение глубины поиска

Поиска файлов по имени в Linux только в этой папке:

find . -maxdepth 1 -name «*.php»

4. Инвертирование шаблона

Найти файлы, которые не соответствуют шаблону:

find . -not -name «test*»

5. Несколько критериев

Поиск командой find в Linux по нескольким критериям, с оператором исключения:

find . -name «test» -not -name «*.php»

Найдет все файлы, начинающиеся на test, но без расширения php. А теперь рассмотрим оператор ИЛИ:

find -name «*.html» -o -name «*.php»

6. Несколько каталогов

Искать в двух каталогах одновременно:

find ./test ./test2 -type f -name «*.c»

7. Поиск скрытых файлов

Найти скрытые файлы:

8. Поиск по разрешениям

Найти файлы с определенной маской прав, например, 0664:

find . type f -perm 0664

Найти файлы с установленным флагом suid/guid:

find / -maxdepth 2 -perm /u=s

Поиск файлов только для чтения:

find /etc -maxdepth 1 -perm /u=r

Найти только исполняемые файлы:

find /bin -maxdepth 2 -perm /a=x

9. Поиск файлов по группах и пользователях

Найти все файлы, принадлежащие пользователю:

Поиск файлов в Linux принадлежащих группе:

find /var/www -group developer

10. Поиск по дате модификации

Поиск файлов по дате в Linux осуществляется с помощью параметра mtime. Найти все файлы модифицированные 50 дней назад:

Поиск файлов в Linux открытых N дней назад:

Найти все файлы, модифицированные между 50 и 100 дней назад:

find / -mtime +50 –mtime -100

Найти файлы измененные в течении часа:

11. Поиск файлов по размеру

Найти все файлы размером 50 мегабайт:

От пятидесяти до ста мегабайт:

find / -size +50M -size -100M

Найти самые маленькие файлы:

find . -type f -exec ls -s <> \; | sort -n -r | head -5

find . -type f -exec ls -s <> \; | sort -n | head -5

12. Поиск пустых файлов и папок

find /tmp -type f -empty

13. Действия с найденными файлами

Для выполнения произвольных команд для найденных файлов используется опция -exec. Например, выполнить ls для получения подробной информации о каждом файле:

Удалить все текстовые файлы в tmp

find /tmp -type f -name «*.txt» -exec rm -f <> \;

Удалить все файлы больше 100 мегабайт:

find /home/bob/dir -type f -name *.log -size +10M -exec rm -f <> \;

Выводы

Вот и подошла к концу эта небольшая статья, в которой была рассмотрена команда find. Как видите, это одна из наиболее важных команд терминала Linux, позволяющая очень легко получить список нужных файлов. Ее желательно знать всем системным администраторам. Если вам нужно искать именно по содержимому файлов, то лучше использовать команду grep.

Источник

Как удалить файл через терминал Linux

Управление операционной системой Linux осуществляется благодаря терминалу, посредством множества разнообразных команд и стандартных утилит. Что касается процедуры удаления файла, то она относится к разряду элементарных задач, однако не каждый владеет необходимыми знаниями для осуществления данной затеи.

Удаление через rm

Для удаления файла, необходимо ввести команду rm и название документа.

Данная команда удалит dokument, с некоторыми особенностями:

  • Интерпретатор запросит подтверждение на операцию.
  • В примере предполагается, что dokument находится в домашнем каталоге как и пользователь (/root/).

Удалим файл «newfile» из каталога /usr/games.

Удалить все файлы в папке.

Ключ «-f» даст возможность не выводить запрос на подтверждение операции. Однако, команда выше очистит только все файлы из каталога «games» не трогая директории.

Если нужно очистить систему от всех файлов, которые заканчиваются «.doc», следует приписать в самом конце команды символ «*», без пробела.

Утилита Remove (rm) требует особой осторожности в работе. При халатном отношении к делу пользователь может навсегда стереть важные файлы.

Чтобы подобный казус не случился, рекомендуется совершать удаление файлов при помощи стандартной программы rm с добавлением опции -i. Она станет некой перестраховкой в данном вопросе – система начнет запрашивать подтверждение пользователя перед удалением файлов из каталога. Как это выглядит на практике:

Если пользователю не нужен запрос на подтверждение, и он на 100% уверен в правильности своих дальнейших действий, можно вписать в команду опцию с противоположным воздействием на процесс (-f).

Удаление через find

Для реализации задуманного можно воспользоваться еще одной альтернативной программой find. Кроме того, она пригодится даже там, где rm не осилит поставленную задачу. Её синтаксис выглядит следующим образом:

$ find папка критерий действие

К примеру, пользователю нужно очистить текущий каталог от всех файлов с названием «file». Их можно найти и уничтожить следующим способом:

find . -type f -name «file» -delete

Чтобы удалить устаревшие логи (то есть, файлы старше конкретного срока), используйте специальную команду в виде:

$ find /path/to/files* -mtime +5 –exec rm <> \;

Исходя из заданной команды, можно понять, что Линукс удалит из текущего каталога все файлы, «возраст» которых превышает 5 дней. Вот видите, как легко управлять устройством посредством терминала!

Иногда в Linux наличествуют файлы, восстановление которых не имеет ни малейшей актуальности посте чистки ПК. То есть, от них нужно избавиться раз и навсегда. Если использовать ранее упомянутую программу rm, то ничего не получится, поскольку она удаляет лишь ссылку на файл, сохраняя при этом его содержимое в памяти устройства. Он все еще будет поддаваться восстановлению, ровно до того момента, пока Линукс не перезапишет его иной информацией.

Через shred

Чтобы очистить систему от документа без возможности его дальнейшего восстановления, нужно использовать специальную команду под названием «shred». Как только срабатывает команда, файл удаляется, и система неоднократно перезаписывает его место на диске. Как это выглядит на практике:

Что происходит далее? Система перезаписывает место на диске 3 раза (по умолчанию), но это количество поддается коррективам. Используйте опцию -n, если нужно что-то поменять. Добавление опции -z также повлияет на итоговый результат. С ней система запишет место на диске нулями, чтобы никто не мог догадаться о том, что определенный файл был уничтожен пользователем.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Как изменить имя компьютера на mac os
  • Как изменить иконку программы mac os
  • Как изменить иконку папки в mac os
  • Как изменить дату создания файла mac os
  • Как изменить ttl на mac os x для обхода мтс