Jestem w folderze: /var/myfolder
.
Wewnątrz znajdują się inne foldery, takie jak: /var/myfolder/A/
/var/myfolder/B/
`/var/myfolder/C/
itp.
Wewnątrz każdego znajduje się kilka plików o losowych nazwach. Jak usunąć wszystkie pliki ze wszystkich folderów w środku /var/myfolder
?
Struktura (wszystkie katalogi, np. A, B, C itp. Wewnątrz /var/myfolder
) powinna pozostać nienaruszona.
-type f
! =! -type d
W przypadku zsh użyj
.
kwalifikatora glob, aby dopasować tylko zwykłe pliki:Spowoduje to rekurencyjne usunięcie wszystkich (nie ukrytych) zwykłych plików w bieżącym katalogu i jego podkatalogach. Dodaj
D
kwalifikator glob, aby usunąć również ukryte zwykłe pliki (i zwykłe pliki w ukrytych katalogach).źródło
Można uruchomić
rm */*
w/var/myfolder
źródło
rm
nie usuwa katalogów - więc po prostu uruchom go na wszystkim.Aby zachować dowiązania symboliczne do katalogów:
I myślę, że powinno to również działać w nieco zoptymalizowany sposób, jeśli istnieje wiele plików, które mogą wymagać przetestowania w powyższej wersji:
źródło
find
ma taką-xtype
opcję.źródło
Usunie wszystko z podfolderów bez dotykania samych podfolderów.
Pierwszy
*
jest dla podkatalogówmyfolder
sobie (A
,B
...). Drugi*
jest dla plikówA
,B
itpJeśli istnieje więcej folderów wewnątrz
A
,B
itp Pierwszy bieg:rm /var/myfolder/*/*/*
uruchomrm /var/myfolder/*/*
.źródło
Powinieneś być w stanie wykonać cd na górę danego drzewa katalogów, a następnie uruchomić:
i to powinno usunąć wszystkie pliki, pozostawiając nietknięte drzewo katalogów. Opcje -print0 i -0 można pominąć, jeśli masz pewność, że nie masz żadnych nazw plików lub katalogów zawierających spacje.
Polecenie find rozróżnia pliki (-type f) i dowiązania (-type l), więc powinno to pozostawić nietknięte linki, jeśli takie istnieją. Jednak nie przetestowane. W razie wątpliwości uruchom:
i sprawdź, czy coś się pojawi przed uruchomieniem wcześniejszego polecenia find.
źródło
rm
flaga-r, -R, --recursive - remove directories and their contents recursively
do tego pasuje?Po prostu użyj poniższego polecenia:
---------------- LUB --------------------------------- -----------------------
„*” Oznacza wszystko, więc kiedy użyjesz *, usuniesz całą zawartość. więc albo użyj takiego polecenia, albo przejdź do katalogu, w którym chcesz usunąć całą zawartość, i po prostu użyj poniższego polecenia:
źródło