Chcę usunąć dowolny plik, który wygląda jak wordpress-891.sql
w bieżącym katalogu (nie w podkatalogach).
Czy rm wordpress-*.sql
zrobi lewę, czy też usunie dopasowania z podkatalogów?
command-line
bash
HorusCoding
źródło
źródło
rm
nie robi rozszerzenia nazwy pliku ...rm "foo*"
spróbuje usunąć plik z dosłowną gwiazdką w nazwie.Odpowiedzi:
Nie. Normalne globowanie
*
nie jest rekurencyjne i nie jestrm
.Jeśli nazwa katalogu pasuje, nie zostanie usunięta - potrzebujesz
-r
flagi, aby usunąć katalog.Jest to bezpieczne, jeśli masz pewność, że chcesz usunąć te pliki.
Możesz także uczynić
rm
interaktywnymnastępnie poprosi o potwierdzenie przed usunięciem każdego pliku
źródło
Tak, to załatwia sprawę i usuwa wszystkie pliki z tym schematem w bieżącym katalogu. I NIE, nie usuwa plików z podkatalogów.
Kiedykolwiek nie masz pewności, co się stanie po uruchomieniu polecenia, takiego jak:
następnie uruchom go za pomocą
ls
:pliki, które zobaczysz w danych wyjściowych, zostaną usunięte.
Kiedy próbujesz uzyskać listę typu:
foo*
lepiej użyć-d
przełącznika z,ls
aby zapobiec wyświetlaniu plików z katalogiem o nazwiefoobar/
itp.Ta sztuczka działa w przypadku poleceń, które nie są używane do rekurencyjnego wykonywania zadania.
Inną rzeczą, którą możesz zrobić, to wpisać żądane dane wejściowe, np .:
wordpress-*
naciśnij Ctrl+ Alt+ *, a teraz wszystkie dopasowania są wpisywane automatycznie przed poleceniem.źródło
printf "%s\n" wordpress-*.sql
echo rm file*
. Zwłaszcza szukaj wrogich nazw plików, takich jak-rf
rm ./*
alborm -- *
.xargs -0
@DavidFoersterls foo*
i masz katalog o nazwiefoobar
, otrzymasz również listę zawartości tego katalogu, więc zwykłyls
nie jest tak naprawdę najlepszym sposobem na to, corm
trafiNie,
rm
nie powtarza się w podkatalogach.Zobacz Usuwanie pasujących plików we wszystkich podkatalogach - SuperUser, aby uzyskać informacje na temat metod usuwania plików w podkatalogach.
Jeśli kiedykolwiek martwisz się przypadkowym usunięciem czegoś ważnego, użyj
gvfs-trash
(który wysyła pliki do kosza) zamiastrm
(który trwale usuwa pliki).źródło
gvfs-trash
wzmiankę nauczyłem się czegoś, czego dziś prawie nie używam ...Jeśli chcesz znaleźć i usunąć wszystkie pasujące pliki, takie jak
wordpress-*.sql
, możesz użyćfind
polecenia. :)Na przykład, chcesz usunąć wszystkie pasujące pliki z
wordpress-*.sql
undertest_dir
, wykonaj następujące czynności.Ilekroć
find
program naprawdę znajdzie pasujący plik, próbuje wykonać polecenie następujące po-exec
opcji. W takim przypadkurm -f {}
zostanie wykonany i{}
zostanie zmieniony na nazwę pliku dopasowania. Na przykładMożesz również ustawić głębokość podkatalogów za pomocą
-maxdepth
opcji.Pamiętaj, że musisz określić
-maxdepth
opcję przed innymi opcjami. W przeciwnym razie możesz osiągnąć wyniki, których tak naprawdę nie chcesz zobaczyć.źródło
-maxdepth
. Użyj-exec rm -f {} +
raczej niż-exec \;
, lub jeszcze lepiej, po prostu-delete