Jestem najbliżej
# rm /path/to/directory/*.*
ale to nie działa w przypadku plików, które nie mają rozszerzenia ...
Jestem najbliżej
# rm /path/to/directory/*.*
ale to nie działa w przypadku plików, które nie mają rozszerzenia ...
Odpowiedzi:
Linux nie używa rozszerzeń. Twórca pliku decyduje, czy chce, aby nazwa miała rozszerzenie. Linux patrzy na pierwszy bajt, aby dowiedzieć się, z jakim plikiem ma do czynienia.
Aby usunąć wszystko z katalogu, użyj:
rm /path/to/directory/*
Możesz użyć tej -ropcji, na przykład:
rm -r /path/to/directory/*
aby usunąć również wszystkie podkatalogi (wraz z całą ich zawartością) w katalogu, z którego usuwana jest zawartość. W przeciwnym razie pojawi się błąd informujący, że nie usuwa katalogu.
all files;) *.*oznacza wszystkie pliki zawierające .gdzieś w nazwie
*a*oznacza zero lub więcej znaków, po których anastępuje zero lub więcej znaków. To pasuje do nazwy plików happy, apple, alub la.
Aby usunąć folder z całą zawartością (w tym wszystkie foldery wewnętrzne ):
rm -rf /path/to/directory
Aby usunąć całą zawartość folderu (w tym wszystkie foldery wewnętrzne ), ale nie sam folder:
rm -rf /path/to/directory/*
lub
rm -rf /path/to/directory/{*,.*}
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 ):
rm -f /path/to/directory/{*,.*}
Ostrzeżenie : jeśli masz spacje na swojej ścieżce, zawsze używaj cudzysłowów.
rm -rf /path/to the/directory/*
odpowiada 2 oddzielnym rm -rfpołączeniom:
rm -rf /path/to
rm -rf the/directory/*
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):
rm -rf "/path/to the/directory/"*
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.rm -rf /path/to/directory/*nie usuwa ukrytego pliku w folderze np .htaccess. Może rm -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, uruchom shopt -s dotglobprzed uruchomieniem rm -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:
rm -rf /path/to/directory/{*,.*}
./i ../, ale to nadal usuwać ukryte pliki.
rm -r $(pwd)/{*,.*}
Jeśli chcesz usunąć tylko pliki z katalogu / path / to / możesz to zrobić
find /path/to/directory -type f -print0| xargs -0 rm
lub
find /path/to/directory -type f -exec rm '{}' \;
Możesz ładować za pomocą find, zaletą jest to, że możesz wymienić to, co zostało znalezione bez przesyłania potokiem, rmabyś mógł zobaczyć, co zostanie usunięte przed rozpoczęciem.
GNU findjako -deleteorzeczenie. Jeśli nadal chcesz używać -exec, zastąpienie \;przez +spowoduje zebranie rmpołą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
rm -rf dir_name && mkdir dir_name
posługiwać się find
find dir_name -mindepth 1 -delete
Tutaj określamy, -mindepth 1aby 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
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 -rfmoże również powodować wiele spustoszeń, np. Jeśli przypadkowo wstawisz spację po pierwszym ukośniku, mając uprawnienia superużytkownika ...
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).
find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p\0" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --
Zauważ, że dodałem -xdevargument, aby zapobiec schodzeniu w wierzchowce (jak /procitp.).
-depthczy -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ć -prunena podkatalog (bez wprowadzania dalszych problemów). W przeciwieństwie do tej metody można wstawić
-not \( -path "${DIR}/subdir" -prune \)
przed -mindepthargumentem wykluczającym subdirusunięcie jego zawartości.
-depthflaga find.
-deletezfind ? -deletejest pierwsza głębokość. Jesteś już zakładając, nie POSIX-owych findz -printf, więc można równie dobrze wykorzystywać -deletealbo-depth -print0 | xargs -0 rm
-not \( -path "$DIR/subdir" \)... ale moja działa? Dlaczego?
shopt -s dotglobprzed uruchomieniemrm (...)