- Linux / Unix: Find And Remove Files With One Command On Fly
- Find And Remove Files With One Command On Fly
- Examples of find command
- Conclusion
- Команда find в Linux – мощный инструмент сисадмина
- Поиск по имени
- Поиск по типу файла
- Поиск по размеру файла
- Единицы измерения файлов:
- Поиск пустых файлов и каталогов
- Поиск времени изменения
- Поиск по времени доступа
- Поиск по имени пользователя
- Поиск по набору разрешений
- Операторы
- Действия
- -delete
- Заключение
- Как в Linux восстановить удаленные файлы [гид для новичков]
- Как восстанавливать удаленные файлы с помощью TestDisk в Linux
- Шаг 1
- Шаг 2
- Шаг 3
- Шаг 4
- Шаг 5
- Шаг 6
- Шаг 7
- Шаг 8
- Шаг 9
- Шаг 10
- Пара советов по восстановлению файлов с помощью TestDisk
Linux / Unix: Find And Remove Files With One Command On Fly
However, the rm command does not support search criteria. For example, find all “*.bak” files and delete them. For such necessities, you need to use the find command to search for files in a directory and remove them on the fly. You can combine find and rm command together. This page explains how to find and remove files with one command on fly.
Tutorial details | |
---|---|
Difficulty level | Easy |
Root privileges | No |
Requirements | find command |
Est. reading time | 4 minutes |
Find And Remove Files With One Command On Fly
The basic find command syntax is as follows:
find dir-name criteria action
Where,
- dir-name : – Defines the working directory such as look into /tmp/
- criteria : Use to select files such as “*.sh”
- action : The find action (what-to-do on file) such as delete the file.
You want to remove multiple files such as ‘*.jpg’ or ‘*.sh’ with one command find, try:
find . -name «FILE-TO-FIND» -exec rm -rf <> \;
OR
find /dir/to/search/ -type f -name «FILE-TO-FIND-Regex» -exec rm -f <> \;
The only difference between above two syntax is that the first command remove directories as well where second command only removes files. Where, options are as follows:
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
- -name «FILE-TO-FIND» : File pattern.
- -exec rm -rf <> \; : Delete all files matched by file pattern.
- -type f : Only match files and do not include directory names.
- -type d : Only match dirs and do not include files names.
Modern version of find command has -delete option too. Instead of using the -exec rm -rf <> \; , use the -delete to delete all matched files. We can also explicitly pass the -depth option to the find to process each directory’s contents before the directory itself. It is also possible to use the -maxdepth option to control descend at most levels of directories below the starting-points. For example, -maxdepth 0 means only apply the tests and actions to the starting-points themselves. Similary, we can pass the -mindepth to the find. It means do not apply any tests or actions at levels less than levels (a non-negative integer). For exampe, -mindepth 1 means process all files except the starting-points. So here is a simplied syntax:
find /dir/to/search/ -type f -name «FILES-TO-FIND» -delete
find /dir/to/search/ -type f -name «FILES-TO-FIND» -depth -delete
find /dir/to/search/ -maxdepth 2 -type f -name «FILES-TO-FIND» -depth -delete
Examples of find command
Find all files having .bak (*.bak) extension in the current directory and remove them:
find . -type f -name «*.bak» -exec rm -f <> \;
OR
find . -type f -name «*.bak» -delete
Find all core files in the / (root) directory and remove them (be careful with this command):
# find / -name core -exec rm -f <> \;
### OR ###
# find / -name core -delete
Find all *.bak files in the current directory and removes them with confirmation from user:
$ find . -type f -name «*.bak» -exec rm -i <> \;
Sample outputs:
The -delete always works better because it doesn’t have to spawn an external process such as rm for every matched file. However, the -delete option may not available on all find versions. Hence, we can use the xargs command as follows too:
find . -type f -name «*.err» -print0 | xargs -I <> -0 rm -v «<>»
Where the find command option is as follows:
- -print0 – Force find command to print the full file name on the standard output, followed by a null character (instead of the newline character that -print uses). This allows file names that contain newlines or other types of white space to be correctly interpreted by programs that process the find output. This option corresponds to the -0 option of xargs.
And the xargs command options are as follows:
- -I <> : Replace occurrences of <> in the initial-arguments with names read from standard input. We pass <> as arg to the rm command.
- -0 : Input items are terminated by a null character instead of by whitespace, and the quotes and backslash are not special (every character is taken literally). Disables the end of file string, which is treated like any other argument. Useful when input items might contain white space, quote marks, or backslashes. The GNU find -print0 option produces input suitable for this mode.
- rm -v «<>« : Run rm command on matched files.
Conclusion
Read the following man pages using the man command:
man find
man xargs
man rm
For detailed information on find command please see finding/locating files with find command part # 1, Part # 2.
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Источник
Команда find в Linux – мощный инструмент сисадмина
Иногда критически важно быстро найти нужный файл или информацию в системе. Порой можно ограничиться стандартами функциями поиска, которыми сейчас обладает любой файловый менеджер, но с возможностями терминала им не сравниться.
Команда find – это невероятно мощный инструмент, позволяющий искать файлы не только по названию, но и по:
- Дате добавления.
- Содержимому.
- Регулярным выражениям.
Данная команда будет очень полезна системным администраторам для:
- Управления дисковым пространством.
- Бэкапа.
- Различных операций с файлами.
Команда find в Linux производит поиск файлов и папок на основе заданных вами критериев и позволяет выполнять действия с результатами поиска.
Синтаксис команды find:
- directory-to-search (каталог поиска) – это отправной каталог, с которой find начинает поиск файлов по всем подкаталогам, которые находятся внутри. Если не указать путь, тогда поиск начнется в текущем каталоге;
- criteria (критерий) – критерий, по которым нужно искать файлы;
- action (действие) – что делать с каждым найденным файлом, соответствующим критериям.
Поиск по имени
Следующая команда ищет файл s.txt в текущем каталоге:
- . (точка) – файл относится к нынешнему каталогу
- -name – критерии по которым осуществляется поиск. В данном случае поиск по названию файла.
В данном случае критерий -name учитывает только символы нижнего регистра и файл S.txt не появиться в результатах поиска. Чтобы убрать чувствительность к регистру необходимо использовать –iname.
Для поиска всех изображений c расширением .png нужно использовать шаблон подстановки *.png:
Можно использовать название каталога для поиска. Например, чтобы с помощью команды find найти все png изображения в каталоге home:
Если выдает слишком много ошибок в отказе разрешения, тогда можно добавить в конец команды – 2> /dev/null. Таким образом сообщения об ошибках будут перенаправляться по пути dev/null, что обеспечит более чистую выдачу.
Поиск по типу файла
Критерий -type позволяет искать файлы по типу, которые бывают следующих видов:
- f – простые файлы;
- d – каталоги;
- l – символические ссылки;
- b – блочные устройства (dev);
- c – символьные устройства (dev);
- p – именованные каналы;
- s – сокеты;
Например, указав критерий -type d будут перечислены только каталоги:
Поиск по размеру файла
Допустим, что вам необходимо найти все большие файлы. Для таких ситуаций подойдет критерий -size.
- «+» — Поиск файлов больше заданного размера
- «-» — Поиск файлов меньше заданного размера
- Отсутствие знака означает, что размер файлов в поиске должен полностью совпадать.
В данном случае поиск выведет все файлы более 1 Гб (+1G).
Единицы измерения файлов:
Поиск пустых файлов и каталогов
Критерий -empty позволяет найти пустые файлы и каталоги.
Поиск времени изменения
Критерий -cmin позволяет искать файлы и каталоги по времени изменения. Для поиска всех файлов, измененных за последний час (менее 60 мин), нужно использовать -60:
Таким образом можно найти все файлы в текущем каталоге, которые были созданы или изменены в течение часа (менее 60 минут).
Для поиска файлов, которые наоборот были изменены в любое время кроме последнего часа необходимо использовать +60.
Поиск по времени доступа
Критерий -atime позволяет искать файлы по времени последнего доступа.
Таким образом можно найти файлы, к которым не обращались последние полгода (180 дней).
Поиск по имени пользователя
Опция –user username дает возможность поиска всех файлов и каталогов, принадлежащих конкретному пользователю:
Таким образом можно найти все файлы пользователя tisha в каталоге home, а 2>/dev/null сделает выдачу чистой без ошибок в отказе доступа.
Поиск по набору разрешений
Критерий -perm – ищет файлы по определенному набору разрешений.
Поиск файлов с разрешениями 777.
Операторы
Для объединения нескольких критериев в одну команду поиска можно применять операторы:
Например, чтобы найти файлы размером более 1 Гбайта пользователя tisha необходимо ввести следующую команду:
Если файлы могут принадлежать не только пользователю tisha, но и пользователю pokeristo, а также быть размером более 1 Гбайта.
Перед скобками нужно поставить обратный слеш «\».
Действия
К команде find можно добавить действия, которые будут произведены с результатами поиска.
- -delete — Удаляет соответствующие результатам поиска файлы
- -ls — Вывод более подробных результатов поиска с:
- Размерами файлов.
- Количеством inode.
- -print Стоит по умолчанию, если не указать другое действие. Показывает полный путь к найденным файлам.
- -exec Выполняет указанную команду в каждой строке результатов поиска.
-delete
Полезен, когда необходимо найти и удалить все пустые файлы, например:
Перед удалением лучше лишний раз себя подстраховать. Для этого можно запустить команду с действием по умолчанию -print.
Данное действие является особенным и позволяет выполнить команду по вашему усмотрению в результатах поиска.
- command – это команда, которую вы желаете выполнить для результатов поиска. Например:
- rm
- mv
- cp
- <> – является результатами поиска.
- \; — Команда заканчивается точкой с запятой после обратного слеша.
С помощью –exec можно написать альтернативу команде –delete и применить ее к результатам поиска:
Другой пример использования действия -exec:
Таким образом можно скопировать все .jpg изображения в каталог backups/fotos
Заключение
Команду find можно использовать для поиска:
- Файлов по имени.
- Дате последнего доступа.
- Дате последнего изменения.
- Имени пользователя (владельца файла).
- Имени группы.
- Размеру.
- Разрешению.
- Другим критериям.
С полученными результатами можно сразу выполнять различные действия, такие как:
- Удаление.
- Копирование.
- Перемещение в другой каталог.
Команда find может сильно облегчить жизнь системному администратору, а лучший способ овладеть ей – больше практиковаться.
Источник
Как в Linux восстановить удаленные файлы [гид для новичков]
Статья расскажет о том, как в Linux с помощью инструмента командной строки Test Tool восстановить удаленные файлы. Это легкий в использовании инструмент, который практически любой сможет использовать в целях восстановления утерянных файлов в Ubuntu или иных дистрибутивах Linux.
Вы когда-нибудь были в ужасе? В ужасе от понимания того, что файлы стерты и даже из корзины. Зачастую за ужасом приходит следующая фаза — отрицание. Ее запускает мысль: “Я знаю, что где-то лежит копия”.
Но вместо того, чтобы проходить все эти фазы, лучше не беспокоиться. Главное помните, вы не одни. Рано или поздно все через это проходят.
“Не беспокоится? — возразите вы, — Я только что стер единственную копию резюме!”
Нет, правда, не беспокойтесь. На самом деле все, что вы удалили просто было вынесено из списка. Пока вы больше ничего на него не запишете все останется на месте. На самом деле, даже если после удаления записать что-то на диск, то есть шанс, что удаленная информация все равно на нем останется (это зависит от размера удаленной информации и оставшегося свободного места, но все же).
“Да, хорошо, — скажете вы, — мне легче от мысли, что резюме ‘существует’ в неком абстрактном месте. Но теперь меня беспокоит, что его нельзя открыть, отредактировать или распечатать. То есть все равно его будто нет. Очень помогло бы найти способ ‘разудалить’ файл. Ну и чтобы этот способ не требовал наличие исследовательской IT лаборатории”.
Правда, не беспокойтесь — лаборатории не понадобится. Боле того, если вы не боитесь примитивных графических интерфейсов, то это еще и весьма несложно провернуть. Я продемонстрирую вам, как использовать Test Disk для восстановления файлов.
Как восстанавливать удаленные файлы с помощью TestDisk в Linux
Давайте приведу простой пример: я подключил флешку, загрузил на нее файлы и что-то удалил. Теперь, в моей системе есть возможность удаления файлов прямо с флешки, в обход корзины. Для этого надо на файле нажать правой кнопкой мыши и выбрать “delete”. Будет выведено предупреждение. После нажатия на кнопку “yes” все файлы будут удалены безвозвратно. По крайней мере так кажется.
Но теперь у меня нет этого ужасного чувства. И нет, это не потому что все по сценарию. Я знаю, что мне нужно всего лишь открыть терминал и написать “testdisk” и нажать “enter. И тут наступает один из этих “Linux моментов”. Если у вас нет данного инструмента, то он напишет, как его установить! Просто введите “sudo apt install testdisk”, нажмите “enter” и через 10 секунд он у вас.
Если вы предпочитаете видео, то можете посмотреть ролик с тем же руководством на YouTube канале FOSS:
Шаг 1
Для начала установите инструмент TestDisk. Он есть в официальных репозиториях большинства Linux дистрибутивов. На Ubuntu и Linux дистрибутивах на базе Ubuntu вроде Linux Mint, elementary OS и т.п. для установки TestDisk вы можете использовать следующую команду:
sudo apt install testdisk
Пользователи Arch Linux могут установить его из AUR. В иных дистрибутивах Linux вы можете воспользоваться вот этой ссылкой.
Несмотря на то, что в данном руководстве мы будем говорить о командах в Ubuntu, инструмент не ограничен данным дистрибутивом. Команды, указанные в данной статье, подойдут и в других дистрибутивах.
Шаг 2
Запустите в терминале TestDisk с помощью данной команды:
Шаг 3
Как только он откроется, вы увидите это. Не торопитесь! Интерфейс на самом деле прямолинейный, но текст надо читать внимательно. Используйте стрелки для навигации и ‘Enter’ для подтверждения выбора.
Выберите ‘Create a new log file’
Экран с дополнительными командами их подскажет. Также стоит отметить, что TestDisk 7.0 выделяет следующий логический шаг, но практически всегда правильно читать, что написано на экране, так как инструмент не умеет читать мысли. В любом случае, если TestDisk просто позволения создать log file, соглашайтесь — это полезно.
Шаг 4
Теперь, в данный момент, если вам повезет, вы должны увидеть свой диск. Можете переходить к последним шагам. Но давайте представим, что диска нет, скажем, у вас мультизагрузка. В таком случае права доступа могут съехать, и TestDisk потребует разрешение на открытие. Вы увидите нечто подобное:
Иногда нужны права sudo
Выберите “sudo” и введите пароль. Нажмите “enter” и “enter” снова на следующем экране для того, чтобы создать log file.
Шаг 5
В этот раз TestDisk отобразит все диски. С помощью стрелочек выберите нужный диск и нажмите “enter”:
Необходимо выбрать носитель, на котором мы ищем файлы
Шаг 6
TestDisk снова выбрал верный вариант. Логично, так как простое устройство для хранения данных редко бывает разбитым. Снова жмем “enter”:
Шаг 7
А вот теперь пора подумать. Если вы прочли первый экран (а я в этом не уверен), то наверняка поняли, что это не просто программа для восстановления удаленных файлов. Это мощная дисковая утилита. Но, если мы помним, чего делаем, то выбор не составит труда: мы не пытаемся починить диск, мы пытаемся его восстановить. Выбираем “Advanced” и жмем “enetr”:
Выбираем ‘Advanced’
Шаг 8
Снизу страницы находим “Undelete” и готовимся увидеть привидение!
Выбираем ‘Undelete’
Шаг 9
TestDisk начнет искать файлы и сгенерирует список удаленных файлов, выделенных красным. Стрелкой спускаемся к нему и внимательно изучаем варианты внизу страницы.
Шаг 10
И снова, не забываем, что TestDisk многофункциональное средство. Большинство вариантов отвечает за работу с группами файлов. Нам же просто надо их вернуть! Жмем “c”.
Для копирования нажмите ‘c’ и так вы восстановите файлы
Счет 1-0 в нашу пользу. После нажатия на “c” появились варианты мест для сохранения. По дефолту файлы сохранятся в домашнюю директорию. По сути, это опять отличный вариант, так как навигация в TestDisk местами замороченная.
Пара советов по восстановлению файлов с помощью TestDisk
Во-первых, если вы не понимаете где оказались, для возврата жмите на “q”. Так вы не закроете программу и не потеряете прогресс. “q” ведет себя как кнопка “назад” в классических приложениях с графическим интерфейсом — будете постоянно жать “q”, в какой-то момент окажетесь на стартовом экране.
Во-вторых, чем меньше отвлекающих моментов, тем проще найти то, что ищешь. Иными словами, отключите все не нужные в процессе восстановления хранилища. В минималистичных окружениях простота — друг.
Наконец, TestDisk может помочь восстановить файлы, которые стали недоступны по другим причинам. На самом деле я стал пользоваться ей именно из-за этого. Я пытался сохранить файлы с испорченного диска, отказывающегося запускаться.
Что если диск отформатирован в LVM? Это мой случай. Подключенный LVM диск совсем не похож на обычную Linux ОП. Обычные файлы не появляются, а что-то вычленить не выходит. Это, на ряду с иными причинами, происходит из-за того что большинство файловых менеджеров Linux больше не умеют работать с файловыми системами ext.2
Так или иначе, после печального начала, у меня получилось найти и восстановить утраченные файлы. Отмечу, что в вышеописанном случае шаги будут немного другими. Вам возможно понадобиться использовать функцию “Analyze”. Она приведет диск к нужному состоянию и вам останется только потыкаться в поисках домашней директории. А еще файлы не будут отмеченными красным, ведь их не удаляли. Как только вы их найдете процедура копирования будет такой же.
С TestDisk и небольшой долей удачи вы никогда не потеряете свое резюме, так как всегда сможете восстановить удаленные файлы в Linux.
Источник