Czasami potrzebujesz usunąć prawie wszystkie pliki z katalogu, ale chcesz zachować jedną lub kilka z nich. Kiedy jest ich dużo, przechodzenie jeden po drugim jest żmudnym zadaniem. To nie jest najlepsza opcja, są sposoby, aby znacznie ułatwić pracę w Linuksie i wyeliminować wszystkie potrzebne na raz.
Na przykład możesz chcieć usunąć tylko te, które zaczynają się od określonej nazwy, lub te, które mają określone rozszerzenie i tak dalej. To wszystko jest możliweW rzeczywistości przy innych okazjach pokazałem już podobne tutoriale w LxA. Tutaj możesz postępować zgodnie z samouczkiem krok po kroku iw prosty sposób, aby móc usunąć wszystkie te pliki, które chcesz, z wyjątkiem tych, które chcesz zapisać.
A najlepsze jest to nie będziesz musiał instalować żadnego programu, można to łatwo zrobić za pomocą poleceń takich jak rm i find. To znaczy programy, które są już preinstalowane w każdej dystrybucji Linuksa. I oczywiście metoda będzie polegać na znajdowaniu wzorców i używaniu tych dopasowań do usuwania tylko tego, co chcesz.
Cóż, aby się tam wyeliminować kilka alternatyw, Czym oni są…
Usuń pliki z katalogu za pomocą rm
Cóż, aby użyć rm polecenie Aby wyeliminować to, co czujesz, musisz wiedzieć, jak rozpoznać wzorce:
- * (lista wzorów) - dopasowuje zero lub więcej wystąpień określonych wzorców
- ? (lista wzorców) - dopasowuje zero lub jedno wystąpienie określonych wzorców
- + (lista wzorów) - dopasowuje jedno lub więcej wystąpień określonych wzorców
- @ (lista wzorców) - dopasowuje jeden z określonych wzorców
- ! (lista wzorców) - dopasowuje wszystko oprócz jednego z podanych wzorców
do aktywować extglob Aby z nich skorzystać, musisz najpierw wykonać następującą komendę:
<br data-mce-bogus="1"> shopt -s extglob<br data-mce-bogus="1">
Teraz możesz użyć rm, aby usunąć wszystko, co chcesz. Na przykład, usuwa wszystkie pliki z katalogu oprócz tych, które pasują do nazwy „Lxa”:
rm -v !("lxa")
Możesz również określić co najmniej dwie nazwy, których nie chcesz usuwać. Na przykład, aby uniknąć usunięcia „lxa” i „desdelinux”:
rm -v !("lxa"|"desdelinux")
Możesz usunąć wszystkie pliki, minus te z rozszerzeniem .mp3. Na przykład:
rm -v !(*.mp3)
Na koniec możesz wrócić do wyłącz extglob:
shopt -u extglob
Usuń pliki z katalogu za pomocą funkcji find
Inną alternatywą dla rm jest użyj funkcji znajdź, aby usunąć wszystko, co chcesz. Możesz użyć potoku i xargs z rm lub użyć opcji -delete, aby znaleźć. Oznacza to, że składnia ogólna byłaby następująca:
find /directory/ -type f -not -name 'PATRÓN' -delete find /directory/ -type f -not -name 'PATRÓN' -print0 | xargs -0 -I {} rm [opciones] {}
Na przykład wyobraź sobie, że chcesz usuń wszystkie pliki z katalogu oprócz tych z rozszerzeniem .jpg, możesz użyć jednego z tych dwóch poleceń, ponieważ oba dają ten sam wynik:
find . -type f -not -name '*.jpg'-delete find . -type f -not -name '*.jpg' -print0 | xargs -0 -I {} rm -v {}
Zamiast tego, jeśli chcesz dodaj dodatkowy wzórTy też możesz. Na przykład wyobraź sobie, że nie chcesz usuwać ani pliku .pdf, ani .odt z katalogu:
find . -type f -not \(-name '*pdf' -or -name '*odt' \) -delete
Oczywiście możesz zrobić to samo z | i xargs jak w poprzednim przykładzie. Nawiasem mówiąc, użyliśmy -nie zaprzeczyć, ale możesz to usunąć, aby było pozytywne, to znaczy usunąć pasujące wzorce, a nie je wykluczać.
Usuń pliki z katalogu za pomocą zmiennej GLOBIGNORE
Wreszcie jest Inna alternatywa do znalezienia i rm oraz używa zmiennej środowiskowej do wskazywania plików, które chcesz usunąć lub wykluczyć. Na przykład wyobraź sobie, że chcesz usunąć wszystkie pliki z katalogu o nazwie Pobrane, zapisując pliki .pdf, .mp3 i .mp4. W takim przypadku możesz wykonać następujące czynności:
cd Descargas GLOBIGNORE=*.pdf:*.mp4:.*mp3 rm -v * unset GLOBIGNORE