3 sposoby usuwania wszystkich plików w katalogu oprócz jednego lub kilku plików z rozszerzeniami
- 4235
- 515
- Juliusz Janicki
Czasami wchodzisz w sytuację, w której musisz usunąć wszystkie pliki w katalogu lub po prostu wyczyścić katalog, usuwając wszystkie pliki oprócz plików danego typu (kończąc na konkretnym rozszerzeniu).
W tym artykule pokażemy, jak usunąć pliki w katalogu, z wyjątkiem rozszerzeń lub typów plików za pomocą Rm, znajdować I Globignore polecenia.
Zanim przeprowadzimy się dalej, zacznijmy od krótkiego spojrzenia na jedną ważną koncepcję w systemie Linux - dopasowanie wzorców nazwy pliku, które pozwoli nam poradzić sobie z naszym problemem.
Sugerowane przeczytanie: Użyj komendy Znajdź, aby wyszukać wiele nazw plików/rozszerzeń w Linux
W Linux wzorzec powłoki to ciąg, który składa się z następujących znaków specjalnych, które są określane jako dzikie karty Lub Metacharacters:
*
- pasuje do zera lub więcej znaków?
- Dopasowuje dowolny pojedynczy znak[SEQ]
- Dopasowuje dowolną postać w SEQ[[[!SEQ]
- odpowiada dowolnej postaci nie w SEQ
Istnieją trzy możliwe metody, które tu zbadamy, a obejmują one:
Usuń pliki za pomocą rozszerzonych operatorów dopasowywania wzorców
Różne operatory dopasowywania wzorców rozszerzonych są wymienione poniżej, gdzie lista wzorów to lista zawierająca jedną lub więcej nazw plików, oddzielona za pomocą |
postać:
*(lista wzorów)
- pasuje do zera lub więcej wystąpień określonych wzorców?(lista wzorów)
- odpowiada zerowi lub jednym wystąpieniu określonych wzorów- +(lista wzorów) - pasuje do jednego lub więcej wystąpień określonych wzorów
@(lista wzorów)
- pasuje do jednego z określonych wzorów!(lista wzorów)
- dopasowuje wszystko oprócz jednego z podanych wzorców
Używać ich, włącz extglob Opcja Shell w następujący sposób:
# shopt -s extglob
1. Aby usunąć wszystkie pliki w katalogu, z wyjątkiem nazwy pliku, wpisz polecenie poniżej:
$ rm -v !("Nazwa pliku")Usuń wszystkie pliki oprócz jednego pliku w Linux
2. Aby usunąć wszystkie pliki, z wyjątkiem nazwa pliku1 I nazwa pliku2:
$ rm -v !(„nazwa pliku1” | „nazwa pliku2”)Usuń wszystkie pliki oprócz kilku plików w Linux
3. Poniższy przykład pokazuje, jak usunąć wszystkie pliki inne niż wszystkie .zamek błyskawiczny
Pliki interaktywnie:
$ rm -i !(*.zamek błyskawiczny)Usuń wszystkie pliki oprócz plików ZIP w Linux
4. Następnie możesz usunąć wszystkie pliki w katalogu oprócz wszystkich .zamek błyskawiczny
I .ODT
pliki w następujący sposób, pokazując, co się robi:
$ rm -v !(*.Zip |*.ODT)Usuń wszystkie pliki oprócz niektórych rozszerzeń plików
Po uzyskaniu wszystkich wymaganych poleceń wyłącz extglob Opcja Shell, taka:
$ shopt -u extglob
Usuń pliki za pomocą komendy znajdź polecenie
Zgodnie z tą metodą możemy użyć polecenia Znajdź wyłącznie z odpowiednimi opcjami lub w połączeniu z Xargs polecenie, stosując rurociąg jak w poniższych formularzach:
$ find / Directory / -type f -not -name 'Wzór' -Delete $ find / Directory / -type f -not -name 'wzór' -print0 | xargs -0 -i rm $ find / Directory / -Type f -not -name 'wzór' -print0 | xargs -0 -i rm [opcje]
5. Następujące polecenie usunie wszystkie pliki oprócz .GZ
Pliki w bieżącym katalogu:
$ znajdź . -Typ f -not -name '*.gz'-deleteZnajdź polecenie - usuń wszystkie pliki oprócz .pliki GZ
6. Używać rurociąg I Xargs, Możesz zmodyfikować powyższą sprawę w następujący sposób:
$ znajdź . -Typ f -not -name '*gz' -print0 | xargs -0 -i rm -vUsuń pliki za pomocą poleceń FINK i XARGS
7. Spójrzmy na jeden dodatkowy przykład, poniższe polecenie wyczyści wszystkie pliki z wyłączeniem .GZ
, .ODT
, I .jpg
Pliki w bieżącym katalogu:
$ znajdź . -typ f -not \ ( -nazwa '*gz' -or -name '*odt' -or -name '*.jpg '\) -deleteUsuń wszystkie pliki oprócz rozszerzeń plików
Usuń pliki za pomocą zmiennej Bash Globignore
To ostatnie podejście działa jednak tylko z Bash. Tutaj Globignore Zmienne przechowuje lista wzorów rozdzielona przez okrężność (nazwy plików), które należy zignorować przez rozszerzenie nazwy ścieżki.
Sugerowane przeczytanie: Przydatne 12 praktycznych przykładów na polecenie GREP w Linux
Aby zastosować tę metodę, przejdź do katalogu, który chcesz oczyścić, a następnie ustaw Globignore zmienna w następujący sposób:
$ CD Test $ globignore =*.ODT:*.ISO:*.tekst
W tym przypadku wszystkie pliki inne niż .ODT
, .ISO
, I .tekst
Pliki z usunięciem z bieżącego katalogu.
Teraz uruchom polecenie, aby wyczyścić katalog:
$ rm -v *
Potem wyłącz Globignore zmienny:
$ unset globignoreUsuń pliki za pomocą zmiennej Bash Globignore
Notatka: Aby zrozumieć znaczenie flag zastosowanych w powyższych polecenia.
To wszystko! Jeśli masz na myśli inne techniki wiersza poleceń w tym samym celu, nie zapomnij podzielić się z nami za pośrednictwem naszej sekcji informacji zwrotnej poniżej.
- « Photorec - Odzyskaj usunięte lub utracone pliki w Linux
- Tecmint.Com - Najczęściej oglądane artykuły z 2016 roku »