Jestem najbliżej
# rm /path/to/directory/*.*
ale to nie działa w przypadku plików, które nie mają rozszerzenia ...
command-line
rm
użytkownik784637
źródło
źródło
shopt -s dotglob
przed uruchomieniemrm (...)
all files
;)*.*
oznacza wszystkie pliki zawierające.
gdzieś w nazwie*a*
oznacza zero lub więcej znaków, po którycha
następuje zero lub więcej znaków. To pasuje do nazwy plikówhappy
,apple
,a
lubla
.Aby usunąć folder z całą zawartością (w tym wszystkie foldery wewnętrzne ):
Aby usunąć całą zawartość folderu (w tym wszystkie foldery wewnętrzne ), ale nie sam folder:
lub
jeśli chcesz mieć pewność, że ukryte pliki / katalogi również zostaną usunięte.
Aby usunąć wszystkie „pliki” z folderu ( nie usuwając folderów wewnętrznych ):
Ostrzeżenie : jeśli masz spacje na swojej ścieżce, zawsze używaj cudzysłowów.
odpowiada 2 oddzielnym
rm -rf
połączeniom:Aby uniknąć tego problemu, możesz użyć
'
cudzysłowów'
( nie rozwija zmiennych powłoki) lub"
podwójnych cudzysłowów"
( rozwija zmienne powłoki):Gdzie:
rm
- oznacza „ usuń ”-f
- oznacza „ siłę ”, która jest pomocna, gdy nie chcesz być pytany / pytany, czy chcesz na przykład usunąć archiwum.-r
- oznacza „ rekurencyjny ”, co oznacza, że chcesz zejść rekurencyjnie do każdego folderu i usunąć wszystko.źródło
rm -rf /path/to/directory/*
nie usuwa ukrytego pliku w folderze np.htaccess
. Możerm -rf /path/to/directory/.
? Nie próbowałem tego.rm -rf /path/to/directory/.*
usuwa tylko ukryte pliki w podanym katalogu. Patrząc na komentarz @ danjjl do odpowiedzi @ Rinzwind, aby również usunąć ukryte pliki, uruchomshopt -s dotglob
przed uruchomieniemrm -rf /path/to/directory/*
.rm -rf /path/to/directory/.*
w moim systemie spowodowałem usunięcie elementów w/path/to
. Na szczęście właśnie utworzyłem kopię zapasową wszystkich danych na osobnym dysku. Nie trzeba dodawać, że NIE należy wydawać polecenia,rm -rf /path/to/directory/.*
chyba że utworzono kopię zapasową całego komputera w osobnym / bezpiecznym miejscu!Aby usunąć wszystkie pliki w katalogu (w tym ukryte pliki i podkatalogi) uruchom:
źródło
./
i../
, ale to nadal usuwać ukryte pliki.rm -r $(pwd)/{*,.*}
Jeśli chcesz usunąć tylko pliki z katalogu / path / to / możesz to zrobić
lub
Możesz ładować za pomocą
find
, zaletą jest to, że możesz wymienić to, co zostało znalezione bez przesyłania potokiem,rm
abyś mógł zobaczyć, co zostanie usunięte przed rozpoczęciem.źródło
GNU find
jako-delete
orzeczenie. Jeśli nadal chcesz używać-exec
, zastąpienie\;
przez+
spowoduje zebranierm
połączeń razem, co zwiększy wydajność.Aby usunąć wszystkie pliki i katalogi (w tym ukryte ) z katalogu, możesz wykonać następujące czynności:
usuń folder, a następnie utwórz go ponownie
posługiwać się
find
Tutaj określamy,
-mindepth 1
aby wykluczyć sam katalog nazwa_katalogu.Spójrz na następujący link:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory
źródło
Jeśli chcesz również usunąć wszystkie podkatalogi i sam katalog, możesz użyć
rm -rf /path/to/directory
. Ale zawsze dwukrotnie sprawdź linię przed naciśnięciem klawisza return,rm -rf
może również powodować wiele spustoszeń, np. Jeśli przypadkowo wstawisz spację po pierwszym ukośniku, mając uprawnienia superużytkownika ...źródło
Ponieważ to pytanie jest stale na szczycie Google, gdy sam go szukam:
Inne odpowiedzi mają różne problemy:
Niektóre z nich obejmują
.
i..
które są głośne, mylące i denerwujące.Niektóre z nich zapominają ukryte pliki (pliki zaczynające się od kropki).
Nie usuwają w prawidłowej (najgłębszej kolejności) kolejności, aby umożliwić usunięcie katalogu.
Schodzą do innych (zamontowanych) systemów plików, co często jest niepożądane.
Trudno je poprawnie rozszerzyć o dodatkowe parametry (więcej na ten temat poniżej).
Tak więc, ABY POWAŻNIE usuwać wszystkie pliki ORAZ foldery w katalogu, wykonaj następujące czynności:
Zauważ, że dodałem
-xdev
argument, aby zapobiec schodzeniu w wierzchowce (jak/proc
itp.).Dlaczego nie
-depth
czy-delete
?Pomimo tego, że ludzie ciągle mnie za to głoszą, metody te mają swoje wady: nie wydaje się, aby były wystarczająco rozszerzalne, aby pozwolić
-prune
na podkatalog (bez wprowadzania dalszych problemów). W przeciwieństwie do tej metody można wstawićprzed
-mindepth
argumentem wykluczającymsubdir
usunięcie jego zawartości.źródło
-depth
flagafind
.-delete
zfind
?-delete
jest pierwsza głębokość. Jesteś już zakładając, nie POSIX-owychfind
z-printf
, więc można równie dobrze wykorzystywać-delete
albo-depth -print0 | xargs -0 rm
-not \( -path "$DIR/subdir" \)
... ale moja działa? Dlaczego?Możesz
cd
wejść do katalogu, a następnie,rm *.*
jeśli pamiętasz, uruchomić polecenie tak jak w DOS.źródło
Aby usunąć bieżący katalog, możesz na przykład użyć
rm -d ./*
-d mówi również o usunięciu katalogów.
źródło