Понякога имате нужда премахнете почти всички файлове от директория, но искате да запазите един или някои от тях. Когато има голям брой от тях, преминаването един по един е досадна задача. Това не е най-добрият вариант, има начини да улесните много работата в Linux и да можете да премахнете всичко, от което се нуждаете наведнъж.
Например може да искате да премахнете само тези, които започват с определено име, или тези, които имат конкретно разширение и т.н. Всичко, което е възможноВсъщност при други случаи вече съм показвал подобни уроци в LxA. Тук можете да следвате урока стъпка по стъпка и по лесен начин, за да можете да изтриете всички тези файлове, които искате, с изключение на това, което искате да запазите.
И най-хубавото е това няма да е необходимо да инсталирате никаква програма, това може да се направи лесно с команди като rm и find. Тоест програми, които вече са предварително инсталирани на всяко дистрибуция на Linux. И разбира се, методът ще се основава на намирането на модели и използването на тези съвпадения за премахване само на това, което искате.
Е, за да може да се елиминира там няколко алтернативи, Какво са те…
Премахнете файлове от директория с rm
Е, за да използвате rm команда За да премахнете това, което чувствате, трябва да знаете преди някои начини за идентифициране на модели:
- * (списък с модели) - съответства на нула или повече повторения на посочените модели
- ? (списък с модели) - съответства на нула или една поява на посочените модели
- + (списък с шаблони) - отговаря на едно или повече повторения на посочените модели
- @ (списък с модели) - отговаря на един от посочените модели
- ! (списък с модели) - съвпада с всичко, освен с един от дадените модели
за активирайте extglob За да ги използвате, първо трябва да изпълните следната команда:
<br data-mce-bogus="1"> shopt -s extglob<br data-mce-bogus="1">
Сега можете да използвате rm, за да премахнете каквото искате. Например, премахнете всички файлове от директория, с изключение на тези, които съответстват на името «Lxa»:
rm -v !("lxa")
Можете също да посочите две или повече имена, които не искате да изтриете. Например, за да избегнете премахването на "lxa" и "desdelinux":
rm -v !("lxa"|"desdelinux")
Можете да изтриете всички файлове, минус тези с удължаване .mp3. Например:
rm -v !(*.mp3)
В края можете да се върнете към деактивиране на:
shopt -u extglob
Премахнете файлове от директория с find
Друга алтернатива на rm е използвайте find, за да премахнете всичко, което ви харесва. Можете да използвате тръба и xargs с rm, или да използвате опцията -delete, за да намерите. Тоест общият синтаксис би бил:
find /directory/ -type f -not -name 'PATRÓN' -delete find /directory/ -type f -not -name 'PATRÓN' -print0 | xargs -0 -I {} rm [opciones] {}
Например, представете си, че искате изтрийте всички файлове в директория, с изключение на тези с разширението .jpg, можете да използвате една от тези две команди, тъй като и двете получават един и същ резултат:
find . -type f -not -name '*.jpg'-delete find . -type f -not -name '*.jpg' -print0 | xargs -0 -I {} rm -v {}
Вместо това, ако сте искали добавете допълнителен шаблон, вие също бихте могли. Да предположим например, че не искате да премахвате нито .pdf, нито .odt от директория:
find . -type f -not \(-name '*pdf' -or -name '*odt' \) -delete
Разбира се, бихте могли да направите същото с | и xargs, както в предишния пример. Между другото, ние сме използвали -не да отрека, но можете да премахнете това, за да го направите положително, тоест да премахнете съвпадащите модели и да не ги изключвате.
Изтрийте файлове от директория, като използвате променливата GLOBIGNORE
И накрая, има Друга алтернатива за намиране и rm и използва променлива на околната среда, за да сочи към файловете, които искате да премахнете или изключите. Например, представете си, че искате да изтриете всички файлове в директория, наречена Изтегляния, като запазите файловете .pdf, .mp3 и .mp4. В този случай можете да направите следното:
cd Descargas GLOBIGNORE=*.pdf:*.mp4:.*mp3 rm -v * unset GLOBIGNORE