답변:
에 /var/lib/dpkg/info
있는 .list
텍스트 파일 목록의 모든 파일은 데비안의 패키지 관리자를 통해 설치된 각 package¹에 포함되어있다.
파일 시스템에서 모든 항목과 일치하지 않는 모든 파일을 찾으려면 다음과 같은 방법으로 얻을 수 있습니다.
find / -xdev -type f \( -exec grep -xq "{}" /var/lib/dpkg/info/*.list \; -or -print \)
전체 파일 시스템이 스캔되므로 시간이 오래 걸립니다. 시스템 디렉토리에 다른 파티션 (예 : /usr
또는 /var
)을 사용하는 경우 초기 뒤에 파티션을 지정하십시오 /
.
경고 : 패키지 스크립트로 작성된 파일은 포함 되지 않습니다 . 예를 들어 :
/etc/hosts.allow
libwrap0
패키지 설치시 해당 파일이 존재하지 않는 경우, 파일이 어디에도 나열되지 않았지만 파일이 생성 되었을 수 있습니다 ..pyc
파일 (Python 라이브러리 컴파일), .elc
파일 (Emacs Lisp 라이브러리 컴파일) 등 많은 파일이 컴파일됩니다 ./var/lib/dpkg/info/*.list
위의 쿼리는 다른 원칙에 따라 다시 작성해야합니다.
보다 효율적 버전 파트리스의 용액 @ 프로세스 교체 지원 (갖는 쉘을 사용하여 bash
, AT & T ksh
, zsh
) :
(
export LC_ALL=C
comm -23 <(find / -xdev -type f | sort) \
<(sort -u /var/lib/dpkg/info/*.list)
)
Patrice의 솔루션과 마찬가지로 파일 경로에 줄 바꿈 문자가 포함되어 있지 않다고 가정합니다.
locate
데이터베이스를 사용하는 것이 실행하는 것보다 빠릅 find
니까? locate \* | grep -v "^/home/"
-또한 /boot/
다른 시스템 파티션을 살펴볼 수 있다는 이점이 있습니다.
프로세스 대체 & grep
&를 사용할 수도 있습니다 find
. (가) 있습니다 grep
에서만 관련 경로를 필터링 두 번 사용 /var/lib/dpkg/info
하면 특정 디렉토리에있는 파일을 찾는 경우에 몇 초 저장합니다.
dir="/lib/x86_64-linux-gnu"
find "$dir" -type f \
| grep -v -x -F -f \
<(find '/var/lib/dpkg/info' -name '*.list' -print0 \
| xargs -0 grep -h -F "^$dir" \
| sort -u)
find: argument list too long