Yanıtlar:
Gelen /var/lib/dpkg/infoolan .listmetin dosyaları liste tüm dosyaları Debian'ın paket yöneticisi aracılığıyla yüklenmiş her package¹ içerdiği söyledi.
Dosya sistemindeki herhangi bir girişle eşleşmeyen tüm dosyaları bulmak böyle naif bir şeyle elde edilebilir:
find / -xdev -type f \( -exec grep -xq "{}" /var/lib/dpkg/info/*.list \; -or -print \)
Tüm dosya sistemi taranacağı için bu çok uzun zaman alacaktır. Sistem dizinleri için ( /usrveya gibi /var) farklı bölümler kullanıyorsanız , bunları ilkinden sonra belirtin /.
Uyarı: Bu mu değil paket komut dosyaları tarafından oluşturulan dosyaları içerir. Örneğin:
/etc/hosts.allowherhangi bir yerde listelenmemiştir ancak libwrap0paketin yüklenmesi sırasında dosya yoksa, muhtemelen oluşturulan dosyadan gelebilir ..pycdosyalar (derlenmiş Python kitaplıkları), .elcdosyalar (derlenmiş Emacs Lisp kütüphaneleri), vb./var/lib/dpkg/info/*.list- yukarıdaki sorgu başka bir prensip altında yeniden yazılması gerekir.
Proses ikamesi için destekli bir kabuk ( , AT&T , ) kullanarak @ Patrice'nin çözümünün daha verimli bir sürümü :bashkshzsh
(
export LC_ALL=C
comm -23 <(find / -xdev -type f | sort) \
<(sort -u /var/lib/dpkg/info/*.list)
)
Patrice'in çözümü gibi, hiçbir dosya yolunun yeni satır karakteri içermediğini varsaymaz.
locateVeritabanını kullanmak çalıştırmaktan daha hızlı olur findmu? locate \* | grep -v "^/home/"- ayrıca içeriye /boot/ve diğer sistem bölümlerine bakma avantajına sahiptir .
Ayrıca işlem ikamesini de kullanabilirsiniz & grep& find. Belirli bir dizinde dosya arıyorsanız, grepyalnızca ilgili yolları /var/lib/dpkg/infobirkaç saniye kaydetmek için iki kez kullanıldığını unutmayın .
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