Mam katalogi systemu plików Ubuntu w katalogu głównym i przypadkowo skopiowałem setki plików do katalogu głównego.
Intuicyjnie próbowałem usunąć skopiowane pliki, wykluczając podobny system plików
rm -rf !{bin,sbin,usr,opt,lib,var,etc,srv,libx32,lib64,run,boot,proc,sys,dev} ./.
ale to nie działa. Jaki jest właściwy sposób wykluczenia niektórych katalogów podczas usuwania całości?
EDYCJA: Nigdy nie próbuj tutaj żadnych poleceń, nie wiedząc, co robić!
mc
. Zaznacz wszystko za pomocą*
, a następnie odznacz określone pliki za pomocą-
lubInsert
./bin/bash
mc
jest Midnight Commander, bardzo przydatną imitacją Norton Commander. Działa w terminalu. (Zarówno Midnight Commander, jak i Norton Commander to przykłady tak zwanego ortodoksyjnego menedżera plików .)Odpowiedzi:
Ponieważ używasz
bash
:Polecam dodać
echo
na początku wiersza poleceń, gdy uruchamiasz coś, co potencjalnie może wysadzić cały system. Usuń go, jeśli jesteś zadowolony z wyniku.Uwaga: powyższe polecenie nie usuwa ukrytych plików (tych, których nazwa zaczyna się kropką). Jeśli chcesz je również usunąć, aktywuj także
dotglob
opcję:źródło
rm -rf ./!(bin,sbin,..)
oddzielić przecinek, ale usuwa wszystkie katalogi.!(...)
składnia? Z przykładu, który intuicyjnie myślałem,ls ./!(*/)
że wymienię tylko pliki, ale to nie działa w ten sposób.*
lub innych globów.To polecenie pokaże wszystkie nie-katalogi w
/
:Po dokonaniu absolutnie pewien żadne pliki są tam, że chcesz zachować, można użyć:
Bezpieczniej byłoby przenieść je w inne miejsce, aby upewnić się, że nie usuwasz czegoś, co chcesz zachować:
Jeśli oprócz plików masz również katalogi dodane do katalogu głównego systemu plików, można to zautomatyzować, wykluczając katalogi LSB z automatycznego
mv
lubrm
, ale szczerze mówiąc, ponieważ mamy do czynienia z czyszczeniem rzeczy w root systemu plików, zdecydowanie zalecam rozważenie zrobienia tego ręcznie, jeśli to w ogóle możliwe.Jeśli nie jest to możliwe, coś takiego może załatwić sprawę:
Po przejściu testu krzyku (tzn. System nadal działa i nie krzyczysz w udręce), możesz usunąć zawartość
/root/preserve/
.Ważna uwaga: cokolwiek robisz, nawet nie myśl o uruchomieniu jakiejkolwiek permutacji
rm -fr [ANYTHING GOES HERE] /
.źródło
rm
. Jak skryptrm -fr $somepath/
zsomepath
niezainicjowanym w nim. Mógłbym pójść dalej, by wyrazić, jak poważny to jest, ale zdecydowałem się pozostać przyjazny dla rodziny w moim napomnieniu.To powinno zakończyć zadanie (choć nie w taki sam sposób, jak prosi OP):
usuń wszystkie pliki / katalogi, które chcesz zachować
Jeśli wszystkie pliki mają ten sam format nazwy, datę lub coś innego, istnieją inne metody.
Patrzę na i-węzły - i sprawdzam, czy są one sekwencyjne przez ls -i | sort, a jeśli tak, to nowe pliki będą miały większe i-węzły. Następnie stosując ten sam typ procesu jak powyżej ...
w powyższym poleceniu cięcia najpierw sprawdź listę i-węzłów, aby upewnić się, że jest to odpowiednia ilość.
źródło