W moim systemie mam pliki, które nie należą do żadnego pakietu, są moje lub pochodzą z zainstalowanych programów skompilowanych make install
. Jak mogę znaleźć wszystkie pliki, które nie należą do żadnego pakietu?
źródło
W moim systemie mam pliki, które nie należą do żadnego pakietu, są moje lub pochodzą z zainstalowanych programów skompilowanych make install
. Jak mogę znaleźć wszystkie pliki, które nie należą do żadnego pakietu?
W /var/lib/dpkg/info
to .list
pliki tekstowe, które lista wszystkich plików zawartych w każdej zainstalowanej przez menadżera pakietów Debiana package¹.
Znalezienie wszystkich plików w systemie plików, które nie pasują do żadnego wpisu, można osiągnąć za pomocą czegoś naiwnego:
find / -xdev -type f \( -exec grep -xq "{}" /var/lib/dpkg/info/*.list \; -or -print \)
Zajmie to oczywiście bardzo dużo czasu, ponieważ cały system plików zostanie przeskanowany. Jeśli używasz różnych partycji dla katalogów systemowych (takich jak /usr
lub /var
), określ je po początkowej /
.
Ostrzeżenie: nie obejmuje plików utworzonych przez skrypty pakietu. Na przykład:
/etc/hosts.allow
nie ma go nigdzie na liście, ale może pochodzić od libwrap0
tego, który prawdopodobnie go utworzył, jeśli ten plik nie istniał w czasie instalacji pakietu..pyc
pliki (skompilowane biblioteki Pythona), .elc
pliki (skompilowane biblioteki Emacs Lisp) itp.
find: argument list too long
/var/lib/dpkg/info/*.list
- powyższe zapytanie musiałoby zostać przepisane na podstawie innej zasady.Bardziej wydajne wersja @ roztworu Patrice jest , za pomocą powłoki z obsługą do zastąpienia procesu (
bash
AT & Tksh
,zsh
):Podobnie jak rozwiązanie Patrice, zakłada, że ścieżka do pliku nie zawiera znaków nowej linii.
źródło
locate
bazy danych byłoby szybsze niż uruchomieniefind
?locate \* | grep -v "^/home/"
- ma również tę zaletę, że może przeglądać/boot/
i inne partycje systemowe.Ponieważ otagowałeś swoje pytanie
debian
oczywistym wyborem, o którym jeszcze nie wspomniano, należy go użyć,cruft-ng
jeśli nie potrzebujesz żadnej elastyczności lubcruft
jeśli nie chcesz przeszukiwać całego systemu / umiejscowionegob.źródło
Możesz także użyć zastępowania procesów i
grep
&find
. Zauważ, żegrep
służy on dwukrotnie do filtrowania tylko odpowiednich ścieżek,/var/lib/dpkg/info
aby zaoszczędzić kilka sekund, jeśli szukasz plików w określonym katalogu.źródło