जवाबों:
में /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
फाइलें (संकलित पाइथन लाइब्रेरी), .elc
फाइलें (संकलित इमैक लिस्प लाइब्रेरर्स), आदि।/var/lib/dpkg/info/*.list
- ऊपर दिए गए क्वेरी को किसी अन्य सिद्धांत के तहत फिर से लिखना होगा।
का एक और अधिक कुशल संस्करण @ पैट्रिस के समाधान , प्रक्रिया प्रतिस्थापन के लिए समर्थन (के साथ एक खोल का उपयोग करते हुए bash
, एटी एंड टी ksh
, zsh
):
(
export LC_ALL=C
comm -23 <(find / -xdev -type f | sort) \
<(sort -u /var/lib/dpkg/info/*.list)
)
पैट्रिस के समाधान की तरह, यह मानता है कि कोई फ़ाइल पथ न्यूलाइन वर्ण नहीं है।
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