एक पेड़ के रूप में निर्देशिका संरचना को मुद्रित करने के लिए लिनक्स कमांड


510

क्या कोई linux कमांड है जिसे मैं बैश स्क्रिप्ट से कॉल कर सकता हूं जो डायरेक्टरी स्ट्रक्चर को ट्री के रूप में प्रिंट करेगा, जैसे;

folder1
   a.txt
   b.txt
folder2
   folder3

7
जरा दौड़ो find। या के find . -not -path '*/\.*'साथ शुरू करने के लिए फ़ाइलों और फ़ोल्डरों को छिपाने के लिए .। यदि आप रिक्त स्थान के साथ आउटपुट करना चाहते हैं, तो सवाल के रूप में, इसे "प्रेटिफ़ायर ढूंढें" स्क्रिप्ट के साथ उपयोग करें:find . -not -path '*/\.*' | python -c "import sys as s;s.a=[];[setattr(s,'a',list(filter(lambda p: c.startswith(p+'/'),s.a)))or (s.stdout.write(' '*len(s.a)+c[len(s.a[-1])+1 if s.a else 0:])or True) and s.a.append(c[:-1]) for c in s.stdin]"
उपयोगकर्ता

11
क्या इस तरह के सवालों को बंद करने के बजाय सुपरयूजर में नहीं जाना चाहिए?
बालमिपुर

12
मुझे नहीं लगता कि यह सवाल "विषय के रूप में" बंद होने के योग्य है। टैग सही लग रहे हैं।
संकटा बेर्दे

14
माइग्रेट किए बिना प्रश्नों को बंद करने की नीति सामान्य रूप से स्टैकओवरफ़्लो और मानव ज्ञान दोनों के लिए हानिकारक है। पिछले 3 दिनों में, हर एक प्रश्न जो मैंने जाना और उसी तरह के तर्क के लिए बंद कर दिया गया, और कोई भी गतिविधि नहीं हो पाई। इसका मतलब यह है कि कोई भी इसे अपडेट नहीं कर सकता है, कोई भी बेहतर जवाब नहीं दे सकता है, और यह स्टैकओवरफ्लो को शॉर्टसाइटेड या एलीटिस्ट बनाता है। Stackoverflow को एक माइग्रेशन की आवश्यकता पर विचार करना चाहिए जब एक विषय इन शर्तों के लिए पाया जाता है।
नहीं, बल्कि

5
मैं @NickYeates से सहमत हूं मैं 2017 के सितंबर के अंत में यहां आया हूं फिर भी इसी प्रश्न का उत्तर ढूंढ रहा हूं। जब हम इन सवालों और जवाब नीतियों को डिजाइन करते हैं तो दीर्घकालिक सोचें!
एलेक्स

जवाबों:


773

क्या यह आप पेड़ की तलाश कर रहे हैं ? यह अधिकांश वितरणों में होना चाहिए (शायद एक वैकल्पिक स्थापित के रूप में)।

~> tree -d /proc/self/
/proc/self/
|-- attr
|-- cwd -> /proc
|-- fd
|   `-- 3 -> /proc/15589/fd
|-- fdinfo
|-- net
|   |-- dev_snmp6
|   |-- netfilter
|   |-- rpc
|   |   |-- auth.rpcsec.context
|   |   |-- auth.rpcsec.init
|   |   |-- auth.unix.gid
|   |   |-- auth.unix.ip
|   |   |-- nfs4.idtoname
|   |   |-- nfs4.nametoid
|   |   |-- nfsd.export
|   |   `-- nfsd.fh
|   `-- stat
|-- root -> /
`-- task
    `-- 15589
        |-- attr
        |-- cwd -> /proc
        |-- fd
        | `-- 3 -> /proc/15589/task/15589/fd
        |-- fdinfo
        `-- root -> /

27 directories

अनुचर के वेब पेज से लिया गया नमूना।

अधिकतम पुनरावृत्ति की गहराई को निर्दिष्ट करने के लिए आप उस विकल्प को जोड़ सकते हैं -L #जहां #एक संख्या को प्रतिस्थापित किया गया है।

-dफ़ाइलों को भी प्रदर्शित करने के लिए निकालें ।


54
इसे देखने वाले किसी भी आगंतुक के लिए ध्यान दें: -dफ़ाइलों को भी प्रदर्शित करने के लिए निकालें !
अफर

29
इसे देखने वाले किसी भी आगंतुक के लिए ध्यान दें: मैन पेज आपके लिए अधिक झंडे के एक ट्रक लोड को सूचीबद्ध करता है :)
oivvio

42
Mac OS X w / Homebrew पर स्थापित करने के लिए: brew install tree
funfuntime

2
apt-cyg install treeसाइबरविन पर स्थापित करने के लिए (यह मानते हुए कि आपने एप्ट-साइग को स्थापित किया है)
ब्लॉकचेन

2
Ubuntu 16.04 भी इसके साथ नहीं आता है। उपयोग apt-get install treeइसे स्थापित करेगा।
रोमियो सिएरा

331

आप इसका उपयोग कर सकते हैं:

ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/'

यह कुछ सेकंड में फ़ाइलों के बिना वर्तमान उप-निर्देशिकाओं का चित्रमय प्रतिनिधित्व प्रदर्शित करेगा , जैसे /var/cache/:

   .
   |-apache2
   |---mod_cache_disk
   |-apparmor
   |-apt
   |---archives
   |-----partial
   |-apt-xapian-index
   |---index.1
   |-dbconfig-common
   |---backups
   |-debconf

स्रोत


7
यदि आप इसे रिक्त स्थान के साथ चाहते हैं, जैसे कि ओपी ने अनुरोध किया है, तो यह है: ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\// /g' -e 's/^/ /'
बेन

किसी भी तरह से मैं इसे अनदेखा कर सकता हूँ dotfiles? उदाहरण के लिए सामग्री को सूचीबद्ध करने से रोकें .git?
GMA


32
फ़ाइलों को प्रिंट नहीं करता है।
टॉम ज़ातो -

36
फ़ाइलों के साथ: find . | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
JavaSheriff

18

अपने .bashrc में Hassou के समाधान को जोड़ने के लिए, प्रयास करें:

alias lst='ls -R | grep ":$" | sed -e '"'"'s/:$//'"'"' -e '"'"'s/[^-][^\/]*\//--/g'"'"' -e '"'"'s/^/   /'"'"' -e '"'"'s/-/|/'"'"

6
पहली पंक्ति के अंत में न्यूलाइन वर्ण से सावधान रहें यदि इसे सीधे कॉपी किया जाए
राहुल

2
अच्छा उर्फ। लेकिन अंत में गायब है '' (2 एकल उद्धरण वर्ण)। यह इसके बिना भी काम करता है, लेकिन ... यदि आप अंत में कुछ और कमांड जोड़ना चाहते हैं तो आप देखेंगे कि शाब्दिक पूर्ण नहीं है। तो यह जाना चाहिए alias lst='ls -R | grep ":$" | sed -e '"'"'s/:$//'"'"' -e '"'"'s/[^-][^\/]*\//--/g'"'"' -e '"'"'s/^/ /'"'"' -e '"'"'s/-/|/'"'"''
हीरो Qu

6

यह कमांड फोल्डर और फाइल्स दोनों को प्रदर्शित करने का काम करती है ।

find . | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"

उदाहरण आउटपुट:

.
 |-trace.pcap
 |-parent
 | |-chdir1
 | | |-file1.txt
 | |-chdir2
 | | |-file2.txt
 | | |-file3.sh
 |-tmp
 | |-json-c-0.11-4.el7_0.x86_64.rpm

स्रोत: @javasheriff से टिप्पणी यहाँ । यह एक टिप्पणी के रूप में डूबा हुआ है और उत्तर के रूप में पोस्ट करने से उपयोगकर्ताओं को इसे आसानी से स्पॉट करने में मदद मिलती है।


python3 के लिए मैंने पाया find . |grep -vE 'pyc|swp|__init' | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"अच्छी तरह से काम कर रहा
patroqueeet

3

मैं @ हसौ के उत्तर के उत्पादन को पहले से बता रहा हूँ:

ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//──/g' -e 's/─/├/' -e '$s/├/└/'

यह treeअब के आउटपुट की तरह है :

.
├─pkcs11
├─pki
├───ca-trust
├─────extracted
├───────java
├───────openssl
├───────pem
├─────source
├───────anchors
├─profile.d
└─ssh

आप इसका एक उपनाम भी बना सकते हैं:

alias ltree=$'ls -R | grep ":$" | sed -e \'s/:$//\' -e \'s/[^-][^\/]*\//──/g\' -e \'s/─/├/\' -e \'$s/├/└/\''

BTW, treeकुछ वातावरण में उपलब्ध नहीं है, जैसे MinGW। तो वैकल्पिक मददगार है।


खिड़कियों पर गिटबश अंतिम अभिव्यक्ति पसंद नहीं है, यह कहता है कि इसे समाप्त नहीं किया गया है
लेओस लिटरक

2

आप डायरेक्टरी ट्री को प्रिंट करने के लिए कमांड और फाइंड अलाक का उपयोग भी कर सकते हैं। विवरण के लिए, कृपया " कैसे एक मल्टीलेवल ट्री डायरेक्टरी स्ट्रक्चर को प्रिंट करें और लिनक्स कमांड्स का उपयोग करके देखें "

find . -type d | awk -F'/' '{ 
depth=3;
offset=2;
str="|  ";
path="";
if(NF >= 2 && NF < depth + offset) {
    while(offset < NF) {
        path = path "|  ";
        offset ++;
    }
    print path "|-- "$NF;
}}'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.