- Как удалить все файлы в каталоге, кроме одного
- Удалить файлы из каталога с помощью rm
- Удалить файлы из каталога с помощью find
- Удалите файлы из каталога с помощью переменной GLOBIGNORE
- Использование find-удаление всех файлов / каталогов (в Linux), кроме любого
- 11 ответов
- как удалить файлы, кроме некоторых?
- Re: как удалить файлы, кроме некоторых?
- Re: как удалить файлы, кроме некоторых?
- Re: как удалить файлы, кроме некоторых?
- Re: как удалить файлы, кроме некоторых?
- Re: как удалить файлы, кроме некоторых?
- Re: как удалить файлы, кроме некоторых?
- Как удалить каталог Linux
- Как удалить каталог Linux
- Выводы
Как удалить все файлы в каталоге, кроме одного
Иногда вам нужно удалить почти все файлы из каталога, но вы хотите сохранить один или несколько из них. Когда их много, идти по одному — утомительное занятие. Это не лучший вариант, есть способы значительно упростить работу в Linux и можно сразу избавиться от всех, что вам нужно.
Например, вы можете удалить только те, которые начинаются с определенного имени, или те, которые имеют определенное расширение, и так далее. Все что возможноФактически, в других случаях я уже показывал аналогичные уроки в LxA. Здесь вы можете шаг за шагом и простым способом следовать руководству, чтобы удалить все нужные файлы, кроме тех, которые вы хотите сохранить.
И самое лучшее то, что вам не нужно будет устанавливать какую-либо программу, это легко сделать с помощью таких команд, как rm и find. То есть программы, которые уже предустановлены в любом дистрибутиве Linux. И, конечно же, метод будет основан на поиске шаблонов и использовании этих совпадений для удаления только того, что вы хотите.
Ну чтобы там исключить несколько альтернатив, Кто они такие…
Удалить файлы из каталога с помощью rm
Ну, чтобы использовать команда rm Чтобы избавиться от того, что вы чувствуете, вы должны знать перед некоторыми способами выявления закономерностей:
- * (список шаблонов) — соответствует нулю или более вхождений указанных шаблонов
- ? (список шаблонов) — соответствует нулю или одному вхождению указанных шаблонов
- + (список шаблонов) — соответствует одному или нескольким экземплярам указанных шаблонов
- @ (список шаблонов) — соответствует одному из указанных шаблонов
- ! (список шаблонов) — соответствует чему угодно, кроме одного из заданных шаблонов
к активировать extglob Чтобы использовать их, вы должны сначала выполнить следующую команду:
глаз! Я не указываю это, но предполагается, что у вас есть разрешения на выполнение этих операций и что вы находитесь внутри этого каталога, когда выполняете команду rm. Будьте осторожны с этим, потому что, если вы запустите его по другому пути, вы можете удалить файлы, которые вам не нужны. То есть перед выполнением этих команд убедитесь, что вы вошли в нужный каталог с помощью cd.
Теперь вы можете использовать rm, чтобы удалить все, что захотите. Например, удалить все файлы из каталога, кроме тех, которые соответствуют имени «Lxa»:
Вы также можете указать два или более имен, которые вы не хотите удалять. Например, чтобы избежать удаления lxa и desdelinux:
Вы можете удалить все файлы, минус те, с расширением .mp3. Например:
В конце вы можете вернуться к отключить extglob:
Удалить файлы из каталога с помощью find
Другая альтернатива rm — используйте find, чтобы удалить то, что вам нравится. Вы можете использовать канал и xargs с rm или использовать параметр -delete для поиска. То есть общий синтаксис будет таким:
Например, представьте, что вы хотите удалить все файлы из каталога, кроме файлов с расширением .jpg, вы можете использовать одну из этих двух команд, поскольку обе они дают одинаковый результат:
Вместо этого, если вы хотите добавить дополнительный узор, ты тоже мог бы. Например, предположим, что вы не хотите удалять файлы .pdf или .odt из каталога:
Конечно, вы можете сделать то же самое с | и xargs, как в предыдущем примере. Кстати, мы использовали -не отрицать, но вы можете удалить это, чтобы сделать его положительным, то есть удалить совпадающие шаблоны, а не исключать их.
Удалите файлы из каталога с помощью переменной GLOBIGNORE
Наконец, есть Другая альтернатива чтобы найти и rm, и он использует переменную среды, чтобы указать файлы, которые вы хотите удалить или исключить. Например, представьте, что вы хотите удалить все файлы в каталоге с именем Downloads, сохранив файлы .pdf, .mp3 и .mp4. В этом случае вы можете сделать следующее:
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Полный путь к статье: Любители Linux » GNU / Linux » Системное администрирование » Как удалить все файлы в каталоге, кроме одного
Источник
Использование find-удаление всех файлов / каталогов (в Linux), кроме любого
Если мы хотим удалить все файлы и каталоги, которые мы используем, rm -rf * .
но что, если я хочу, чтобы все файлы и каталоги были удалены сразу, кроме одного конкретного файла?
есть ли команда для этого? rm -rf * дает легкость удаления на одном снимке, но удаляет даже мой любимый файл/каталог.
11 ответов
find может быть очень хорошим другом:
find * -maxdepth 0 : выберите все, что выбрано * без спуска в какие-либо каталоги
-name ‘b’ -prune : не беспокоить ( -prune ), что соответствует условию -name ‘b’
-o -exec rm -rf ‘<>‘ ‘;’ : call rm -rf все остальное
кстати, еще, возможно, проще, способ был бы переместить или переименовать ваш любимая каталог, чтобы он не мешал:
короткий ответ:
подробности:
мыслительный процесс для приведенной выше команды:
- Список всех файлов (ls)
- перечислить все, кроме выбранного файла (grep-v «z.txt)
- удалить перечисленные файлы (xargs rm)
создать 5 файлов, как показано ниже:
Список всех файлов, кроме z.txt
теперь мы можем удалить (rm) перечисленные файлы с помощью xargs утилиты :
вы можете ввести его в командной строке или использовать эти клавиши в скрипт
P. S. Я предлагаю -i переключатель rm чтобы предотвратить удаление важных данных.
P. P. S Вы можете написать небольшой скрипт на основе этого решения и разместить его в /usr/bin (например, /usr/bin/rmf ). Теперь вы можете использовать его как и обычное приложение:
скрипт выглядит так (просто эскиз):
по крайней мере в zsh
может быть опцией, если вы хотите сохранить только один файл.
если это только один файл, один простой способ-переместить этот файл в /tmp или что-то, rm -Rf каталог, а затем переместите его обратно. Вы можете назвать это простой командой.
другой вариант-сделать find а то grep из того, что вы не хотите (используя -v или непосредственно с помощью одного из find s предикатов), а затем rm ing остальные файлы.
для одного файла я бы сделал первое. Для чего-то большего я бы написал что-то похожее на обычай что thkala сказал.
в bash у вас есть !() оператор glob, который инвертирует согласованный шаблон. Так что удалить все, кроме файла my_file_name.txt , попробуйте это:
Я не знаю о такой программе, но я хотел ее в прошлом в течение нескольких раз. Основным синтаксисом будет:
программа, которую я имею в виду, имеет три режима:
- точное соответствие (с помощью опции -e )
- glob соответствие (по умолчанию, как показано в приведенном выше примере)
- соответствие регулярному выражению (с опцией -r )
он принимает шаблоны, которые будут исключены из командной строки, а затем разделитель — С указанием имен файлов. Кроме того, имена файлов могут быть прочитаны из stdin (если параметр -s дается), каждый по строке.
такую программу не должно быть трудно написать ни на C, ни на командном языке оболочки. И это делает хорошую тренировку для изучения основ Unix. Когда вы делаете это как программа оболочки, вы должны следить за именами файлов, содержащих пробелы и другие специальные символы, конечно.
Я вижу здесь много длинных средств, которые работают, но с a/ b/ c/ d/ e/
это удаляет все, кроме каталога b / и его содержимого (при условии, что ваш файл находится в b/. Тогда просто cd b / и
чтобы удалить все остальное, кроме файла (с именем «filename»), который вы хотите сохранить.
это выглядит нудно, но это, скорее, сейф
- избегает сложной логики
- никогда не используйте rm -rf * , ее результаты зависят от вашего текущего каталога (который может быть / 😉
- никогда не используйте globbing * : его расширение ограничено ARGV_MAX.
- позволяет проверить на ошибки после каждой команды, и, возможно, избежать катастрофы, вызванной следующей команды.
- избегает неприятных проблем причиненных космосом или НЛ в файловые имена.
Источник
как удалить файлы, кроме некоторых?
Как, используя rm, удалить огромное кол-во файлов кроме каких-то нужных??
Быстренько ответели! 🙂
Re: как удалить файлы, кроме некоторых?
Открой для себя чудесный мир регулярных выражений 🙂
Re: как удалить файлы, кроме некоторых?
$ for ((i = 0; i touch $i;
> done;
$ ls -al
total 0
drwxr-xr-x 2 YurkovVV Админист 0 Jan 9 07:56 .
drwxr-xr-x 8 YurkovVV Админист 0 Jan 9 07:55 ..
-rw-r—r— 1 YurkovVV Админист 0 Jan 9 07:56 0
-rw-r—r— 1 YurkovVV Админист 0 Jan 9 07:56 1
-rw-r—r— 1 YurkovVV Админист 0 Jan 9 07:56 2
-rw-r—r— 1 YurkovVV Админист 0 Jan 9 07:56 3
-rw-r—r— 1 YurkovVV Админист 0 Jan 9 07:56 4
-rw-r—r— 1 YurkovVV Админист 0 Jan 9 07:56 5
-rw-r—r— 1 YurkovVV Админист 0 Jan 9 07:56 6
-rw-r—r— 1 YurkovVV Админист 0 Jan 9 07:56 7
-rw-r—r— 1 YurkovVV Админист 0 Jan 9 07:56 8
-rw-r—r— 1 YurkovVV Админист 0 Jan 9 07:56 9
$ for i in `ls —ignore=3` ; do rm -f $i;done;
$ ls -al
total 0
drwxr-xr-x 2 YurkovVV Админист 0 Jan 9 08:01 .
drwxr-xr-x 8 YurkovVV Админист 0 Jan 9 07:55 ..
-rw-r—r— 1 YurkovVV Админист 0 Jan 9 07:56 3
Re: как удалить файлы, кроме некоторых?
Во-первых, всё то, что ты понаписал, будет работать только с «хорошими» именами файлов, а во-вторых, у тебя действительно имя группы русскими буквами? Это ж ещё додуматься надо.
Re: как удалить файлы, кроме некоторых?
Под «хорошими» подразумевается regexp.
Хорош оффтопить, это же MSYS. 😉
Re: как удалить файлы, кроме некоторых?
Лучше пример своих файлов приведи, а то меня сейчас съедят некоторые!
Re: как удалить файлы, кроме некоторых?
find . -type f -not -name «asdvc» -not -name «sdfb» -print0 |xargs -0 rm
Удаляем все файлы, кроме имеющих имена «asdvc» и «sdfb». Быстро, качественно, надёжно. Гарантия полгода.
Источник
Как удалить каталог Linux
В операционной системе Linux можно выполнить большинство действий через терминал. Удаление каталога Linux — это достаточно простое действие, которое можно выполнить просто открыв файловый менеджер.
Однако в терминале это делается немного быстрее и вы получаете полный контроль над ситуацией. Например, можете выбрать только пустые папки или удалить несколько папок с одним названием. В этой статье мы рассмотрим как удалить каталог Linux через терминал.
Как удалить каталог Linux
Существует несколько команд, которые вы можете использовать для удаления каталога Linux. Рассмотрим их все более подробно. Самый очевидный вариант — это утилита rmdir. Но с помощью нее можно удалять только пустые папки:
Другая команда, которую можно применить — это rm. Она предназначена для удаления файлов Linux, но может использоваться и для папок если ей передать опцию рекурсивного удаления -r:
Такая команда уже позволяет удалить непустой каталог Linux. Но, можно по-другому, например, если вы хотите вывести информацию о файлах, которые удаляются:
rm -Rfv моя_папка
Команда -R включает рекурсивное удаление всех подпапок и файлов в них, -f — разрешает не удалять файлы без запроса, а -v показывает имена удаляемых файлов. В этих примерах я предполагаю что папка которую нужно удалить находится в текущей рабочей папке, например, домашней. Но это необязательно, вы можете указать полный путь к ней начиная от корня файловой системы:
rm -Rfv /var/www/public_html
Читайте подробнее про пути в файловой системе в статье путь к файлу Linux. Теперь вы знаете как удалить непустой каталог в консоли linux, далее усложним задачу, будем удалять папки, которые содержат определенные слова в своем имени:
find . -type d -name «моя_папка» -exec rm -rf <> \;
Подробнее про команду find смотрите в отдельной статье. Если кратко, то -type d указывает, что мы ищем только папки, а параметром -name задаем имя нужных папок. Затем с помощью параметра -exec мы выполняем команду удаления. Таким же образом можно удалить только пустые папки, например, в домашней папке:
/ -empty -type d -delete
Как видите, в find необязательно выполнять отдельную команду, утилита тоже умеет удалять. Вместо домашней папки, можно указать любой нужный вам путь:
find /var/www/public_html/ -empty -type d -delete
Перед удалением вы можете подсчитать количество пустых папок:
find /var/www/public_html/ -empty -type d | wc -l
Другой способ удалить папку linux с помощью find — использовать в дополнение утилиту xargs. Она позволяет подставить аргументы в нужное место. Например:
/ -type f -empty -print0 | xargs -0 -I <> /bin/rm «<>«
Опция -print0 выводит полный путь к найденному файлу в стандартный вывод, а затем мы передаем его команде xargs. Опция -0 указывает, что нужно считать символом завершения строки \0, а -I — что нужно использовать команду из стандартного ввода.
Если вы хотите полностью удалить папку Linux, так, чтобы ее невозможно было восстановить, то можно использовать утилиту wipe. Она не поставляется по умолчанию, но вы можете ее достаточно просто установить:
sudo apt install wipe
Теперь для удаления каталога Linux используйте такую команду:
Опция -r указывает, что нужно удалять рекурсивно все под папки, -f — включает автоматическое удаление, без запроса пользователя, а -i показывает прогресс удаления. Так вы можете удалить все файлы в папке linux без возможности их восстановления поскольку все место на диске где они были будет несколько раз затерто.
Выводы
В этой статье мы рассмотрели как удалить каталог linux, а также как удалить все файлы в папке linux без возможности их будущего восстановления. Как видите, это очень просто, достаточно набрать несколько команд в терминале. Если у вас остались вопросы, спрашивайте в комментариях!
Источник