Z pewnością przy jakiejś okazji sprawdziłeś, że masz niepotrzebny typ pliku w kilku folderach, który zajmuje mało miejsca, ale po prostu nie chcesz go mieć na swoim komputerze. Na przykład w systemie macOS tworzone są niektóre pliki .DS_Store które zapisują informacje o ikonie folderu, jego rozmiarze i położeniu, aw systemie Windows są równoważne plik desktop.ini. Co zrobimy, jeśli mamy katalog pełen podkatalogów i chcemy usunąć te lub inne typy plików? Musimy zrobić rekurencyjnie wymazywać Każdy z nich.
To jest coś, co możemy zrobić ze wszystkimi typami plików. Na przykład, jeśli mamy dysk twardy pełen muzyki, mamy odtwarzacz, który pobrał okładki i nie chcemy ich zapisywać, możemy użyć tego samego polecenia, które szczegółowo opiszemy poniżej, aby je usunąć. Oczywiście biorąc pod uwagę, że będziemy rekurencyjnie usuwać pliki katalogów i ich podkatalogi za pomocą terminala i zostaną one utracone na zawsze, ostrożność nie boli i / lub wykonaj test przed usunięciem wszystkiego, co chcemy usunąć.
Rekurencyjne usuwanie plików określonego typu z terminala
Polecenia dla przykładowych plików .DS_Store systemu macOS wyglądałyby następująco:
cd ruta/a/directorio find . -name '*.DS_Store' -type f -delete
Z poprzednich poleceń pierwsza umieści nas w folderze, w którym chcemy rozpocząć, czyli w tym, który zawiera wszystkie pliki .DS_Store, które chcemy usunąć. Drugi to ten, który usunie wszystkie pliki .DS_Store z pierwszy folder i jego podfoldery lub katalogów. Jeśli chcemy usunąć zdjęcia ze wspomnianych wcześniej folderów muzycznych, musimy umieścić typ rozszerzenia w cudzysłowie, na przykład „* .jpg”.
Szczerze mówiąc, zrobię to w dniu, w którym przestanę używać kantaty jako domyślnego odtwarzacza muzyki. Kantata tworzy i ukrywa pliki informacyjne o tej samej nazwie, co utwory, które mają z przodu kropkę i niski pasek (na przykład ._Song). Kiedy będę tego potrzebował, polecenie, którego będę musiał użyć, będzie odnaleźć. -name '._ *' -type f -delete.
Czy ten mały przewodnik pomógł Ci w rekurencyjnym usuwaniu plików z terminala?
Dzięki, ale w Twoim kodzie jest błąd. Musisz użyć wyrażenia regularnego „*”, czyli „* .DS_STORE”. Zalecam, abyś to poprawił. Cóż, dla tych, którzy mają mniejszą wiedzę na temat bash, kod, który podałeś, nie zadziała. Pozdrowienia!