Chciałbym usunąć każdy plik, ale zachowaj strukturę folderów. Czy jest jakiś sposób?
UWAGA: (Używam GNU bash 4.1.5).
bash
bash-script
Tom Brito
źródło
źródło
Odpowiedzi:
Spróbuj tego:
Spowoduje to usunięcie każdego pojedynczego pliku, z wyjątkiem katalogów, poniżej bieżącego katalogu roboczego. Bądź bardzo ostrożny z tym poleceniem.
Jeśli wersja
find
na twoim komputerze to obsługuje, możesz również użyćźródło
find
Komenda nie widzi cudzysłowie. Po prostu traktuje{}
znacznik jako argument.-exec command {} +
” i to „-exec command ;
”. W\;
przeszłości korzystałem z „{}”.find
. Myślę, że szablony mają pokazywać, jakich argumentówfind
potrzebuje polecenie i nie martw się o nic związanego z powłoką.Możesz użyć polecenia,
find
aby zlokalizować każdy plik, ale zachować strukturę katalogów:Na podstawie tego pytania dotyczące Uniksa i Linuksa zatytułowane: gnu znajdź i maskuj {} dla niektórych powłok - które? , ucieczka przed
{}
pojedynczymi tikami ('
) nie wydaje się już konieczna w przypadku współczesnych powłok, takich jak Bash.źródło
Łatwy sposób na rekursywne usunięcie każdego zwykłego pliku z bieżącego katalogu i podkatalogów:
Tylko zsh ma kwalifikatory globowania do dopasowania plików według typu. Jednak
rm
polecenie nie działa na katalogach, więc w bash możesz użyćTo nie działa dla poleceń innych niż
rm
chociaż. Ogólnie możesz użyćfind
:lub jeśli twój
find
nie obsługuje-delete
:źródło
Miałem podobny wymóg usuwania plików ze ścieżki i jej podkatalogów (filtrowanie według czasu) bez usuwania struktury katalogów.
I użyłem poniższego formatu, który działał dla mnie.
find / test123 / home / test_file_hip / data / nfs -mtime +6 -type f -exec rm {} \;
Składnia: find (ścieżka do pliku) -mtime (większy lub mniej niż dni) -typ f -exec rm {} \;
-type: Wspomnij o typie pliku „f” dla katalogu „d” -exec: wykonaj polecenie rm: remove {}: wyjście polecenia find
Uwaga: przetestuj go przed użyciem. Jeśli coś przeoczyłem, możesz je poprawić lub zaktualizować.
źródło
find ... rm
struktura została już uwzględniona, nie jestem pewien, czy jest to cenny wkład jako nowa odpowiedź na to pytanie.