Удалить несколько файлов linux

How to delete multiple files at once in Bash on Linux?

By the way, why tthe -rf ? Are these folders ? f is to force, r is for recursive. It will work if it’s only a file but be warned, using -rf each time you want to delete something is very (very) (very very) dangerous. (and you should add the tag «bash» because «linux» is too wide.

@user66001: For the GNU project’s opinion on the matter: gnu.org/gnu/linux-and-gnu.html. I take no position on the matter, at least not here, and this is not the place to debate it.

@BorisStitnicky — No need to debate, was completely clueless, and that link gave me the information level I was looking for +1

7 Answers 7

Bash supports all sorts of wildcards and expansions.

Your exact case would be handled by brace expansion, like so:

The above would expand to a single command with all three arguments, and be equivalent to typing:

$ rm -rf abc.log.2012-03-14 abc.log.2012-03-27 abc.log.2012-03-28 

It’s important to note that this expansion is done by the shell, before rm is even loaded.

Don’t use «rm» if you wish to restore the files in future .You can use «rm-trash» utility : github.com/nateshmbhat/rm-trash

Use a wildcard ( * ) to match multiple files.

For example, the command below will delete all files with names beginning with abc.log.2012-03- .

I’d recommend running ls abc.log.2012-03-* to list the files so that you can see what you are going to delete before running the rm command.

For more details see the Bash man page on filename expansion.

If you want to delete all files whose names match a particular form, a wildcard (glob pattern) is the most straightforward solution. Some examples:

$ rm -f abc.log.* # Remove them all $ rm -f abc.log.2012* # Remove all logs from 2012 $ rm -f abc.log.2012-0[123]* # Remove all files from the first quarter of 2012 

Regular expressions are more powerful than wildcards; you can feed the output of grep to rm -f . For example, if some of the file names start with «abc.log» and some with «ABC.log» , grep lets you do a case-insensitive match:

Читайте также:  Linux modules install path

This will cause problems if any of the file names contain funny characters, including spaces. Be careful.

When I do this, I run the ls | grep . command first and check that it produces the output I want — especially if I’m using rm -f :

$ ls | grep -i '^abc\.log\.' (check that the list is correct) $ rm -f $(!!) 

where !! expands to the previous command. Or I can type up-arrow or Ctrl-P and edit the previous line to add the rm -f command.

This assumes you’re using the bash shell. Some other shells, particularly csh and tcsh and some older sh-derived shells, may not support the $(. ) syntax. You can use the equivalent backtick syntax:

The $(. ) syntax is easier to read, and if you’re really ambitious it can be nested.

Finally, if the subset of files you want to delete can’t be easily expressed with a regular expression, a trick I often use is to list the files to a temporary text file, then edit it:

$ ls > list $ vi list # Use your favorite text editor 

I can then edit the list file manually, leaving only the files I want to remove, and then:

(Again, this assumes none of the file names contain funny characters, particularly spaces.)

Or, when editing the list file, I can add rm -f to the beginning of each line and then:

Editing the file is also an opportunity to add quotes where necessary, for example changing rm -f foo bar to rm -f ‘foo bar’ .

Источник

Команда Linux rm

В Linux команда rm (remove) используется для удаления файлов. Они удаляются навсегда поэтому следует соблюдать осторожность и желательно иметь резервные копии.

Использование команды Linux rm с примерами

  • Синтаксис
  • Опции
  • Примеры использования в Linux команды rm
    • Удаление файла
    • Удаление нескольких файлов
    • Интерактивное удаление файла
    • Удаление защищённого файла
    • Удаление каталога
    • Удаление содержимого каталога
    • Удаление пустого каталога
    • Использование подстановочных символов

    Синтаксис

    Опции

    -f, —force Игнорировать несуществующие файлы и аргументы, ни о чём не спрашивать -i Запрашивать подтверждение перед каждым удалением -I Запрашивать подтверждение один раз перед удалением более трёх файлов или перед рекурсивным удалением; не так назойливо, как с -i , но всё же защищает от большинства ошибок —interactive[=КОГДА] Запрашивать подтверждение в соответствии с КОГДА: never (никогда), once ( -I , один раз) или always ( -i , всегда); если КОГДА не задано — запрашивать всегда —one-file-system При рекурсивном удалении дерева, пропускать все каталоги, находящиеся не на той же файловой системе, что и соответствующий аргумент командной строки —no-preserve-root Не обрабатывать / особым образом —preserve-root[=all] Не удалять / (по умолчанию); при указании all отвергать любой аргумент командной строки на отдельном устройстве от его родителя -r, -R, —recursive Рекурсивно удалять каталоги и их содержимое -d, —dir Удалять пустые каталоги -v, —verbose Пояснять производимые действия

    По умолчанию каталоги не удаляются. Используйте параметр —recursive ( -r или -R ), чтобы удалить все перечисленные каталоги вместе с их содержимым.

    Для удаления файла, начинающегося с — (например: -foo ), используйте одну из следующих команд:

    Заметим, что при использовании утилиты для удаления файла, обычно, его содержимое можно восстановить, имея соответствующий опыт и время.

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

    Удаление файла

    В каталоге Directory был создан файл examle :

    oleg@mobile:~/Directory:$ ls -l итого 0 -rw-r--r-- 1 oleg users 0 июл 21 15:21 exmample

    Для удаления файла команде опции не нужны:

    oleg@mobile:~/Directory:$ rm exmample 
    oleg@mobile:~/Directory:$ ls -l итого 0

    Удаление нескольких файлов

    В этом же каталоге были созданы файлы example_1 , example_2 , example_3 :

    oleg@mobile:~/Directory:$ touch example_1 example_2 example_3 oleg@mobile:~/Directory:$ ls -l итого 0 -rw-r--r-- 1 oleg users 0 июл 21 15:29 example_1 -rw-r--r-- 1 oleg users 0 июл 21 15:29 example_2 -rw-r--r-- 1 oleg users 0 июл 21 15:29 example_3

    Для удаления файлов их можно просто перечислить:

    oleg@mobile:~/Directory:$ rm example_1 example_2 example_3
    oleg@mobile:~/Directory:$ ls -l итого 0

    Интерактивное удаление файла

    Если вы хотите получать запрос на подтверждение удаления файла, то используйте опцию -i :

    oleg@mobile:~/Directory:$ rm -i example rm: удалить пустой обычный файл 'example'? y

    При запросе подтверждения вводите y для удаления файла, либо n для прерывания выполнения команды.

    Удаление защищённого файла

    В каталоге Directory создан файл example , защищённый от записи:

    oleg@mobile:~/Directory:$ ls -l итого 0 -r--r--r-- 1 oleg users 0 июл 21 15:42 example
    oleg@mobile:~/Directory:$ rm example rm: удалить защищённый от записи пустой обычный файл 'example'? y

    В любом дистрибутиве Linux команда запросит подтверждения на удаление, но с опцией -f файл удаляется без предупреждения:

    oleg@mobile:~/Directory:$ rm -f example
    oleg@mobile:~/Directory:$ ls -l итого 0

    Удаление каталога

    Команда может использоваться для рекурсивного удаления каталога и его содержимого:

    oleg@mobile:~:$ rm -r Directory

    Удаление содержимого каталога

    Для удаления содержимого каталога команда используется с подстановочным символом * :

    Удаление пустого каталога

    Для удаления пустого каталога команда используется с опцией -d :

    oleg@mobile:~:$ rm -d Directory

    Использование подстановочных символов

    В качестве примера были созданы несколько файлов:

    oleg@mobile:~/Directory:$ ls -l итого 0 -rw-r--r-- 1 oleg users 0 июл 21 16:18 example_1.txt -rw-r--r-- 1 oleg users 0 июл 21 16:18 example_2.txt -rw-r--r-- 1 oleg users 0 июл 21 16:18 example_3.txt -rw-r--r-- 1 oleg users 0 июл 21 16:18 linux_example_1 -rw-r--r-- 1 oleg users 0 июл 21 16:18 linux_example_2 -rw-r--r-- 1 oleg users 0 июл 21 16:18 linux_example_3

    В данном примере файлы, имена которых оканчиваются на .txt , удаляются следующим образом:

    oleg@mobile:~/Directory:$ rm *.txt

    Файлы, имена которых начинаются с linux , удаляются так:

    oleg@mobile:~/Directory:$ rm linux*

    Заключение

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

    Источник

    Команда rm

    Команда rm в Linux

    По умолчанию команда rm не удаляет директории. Чтобы удалить директорию и все ее содержимое, включая вложенные директории, нужно использовать опцию -r (рекурсивное удаление).

    Синтаксис

    файл(ы) — один или несколько файлов и/или директорий, записанных через пробел. Можно использовать шаблон (например, *.txt ).

    Опции

    Игнорировать несуществующие файлы и аргументы. Никогда не выдавать запросы на подтверждение удаления.

    Выдать один запрос на подтверждение удаления всех файлов, если удаляется больше трех файлов или используется рекурсивное удаление. Опция применяется, как более «щадящая» версия опции -i

    • never — никогда не выдавать запросы на подтверждение удаления.
    • once — выводить запрос один раз (аналог опции -I ).
    • always — выводить запрос всегда (аналог опции -i ).

    Если значение КОГДА не задано, то используется always

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

    Если в качестве директории для удаления задан корневой раздел / , то запретить выполнять команду rm над корневым разделом. Данное поведение используется по умолчанию.

    Примечание

    Если нужно удалить файл, название которого начинается с символа — , например, файл -myfile , то используется следующая команда:

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

    Удалить файл

    Чтобы удалить файл с помощью команды rm достаточно указать название файла:

    Можно удалить несколько файлов, перечислив их имена через пробел:

    rm myfile1.txt myfile2.txt myfile3.txt

    Принудительно удалить защищенный файл

    Если файл защищен от записи, то по умолчанию будет выдан запрос на подтверждение операции удаления. Чтобы запрос не выводился, и происходило удаление защищенных файлов, используется опция -f

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

    Чтобы удалить все файлы в текущей директории можно использовать шаблонную запись звездочка *

    Выдавать запрос перед удалением каждого файла

    Чтобы перед удалением каждого файла выводилось подтверждение на удаление данного файла, используется опция -i

    Выдать запрос на удаление один раз

    При использовании опции -I выводится всего один запрос на подтверждение удаления файлов, причем, только если удаляемых файлов четыре и более. Если файлов 3, или 2, или 1, то запрос не выводится.

    Команда RM. Запрос на удаление файлов

    Удалить директорию и ее содержимое

    Для удаления директорий и их содержимого используется опция -r . Удалим директорию mydir и все файлы и директории внутри нее:

    Видео: Удаление корневого раздела командой RM

    Источник

Оцените статью
Adblock
detector