এমন কোনও লিনাক্স কমান্ড আছে যা আমি কোনও বাশ স্ক্রিপ্ট থেকে কল করতে পারি যা একটি কাঠের আকারে ডিরেক্টরি কাঠামো প্রিন্ট করবে, যেমন,
folder1
a.txt
b.txt
folder2
folder3
এমন কোনও লিনাক্স কমান্ড আছে যা আমি কোনও বাশ স্ক্রিপ্ট থেকে কল করতে পারি যা একটি কাঠের আকারে ডিরেক্টরি কাঠামো প্রিন্ট করবে, যেমন,
folder1
a.txt
b.txt
folder2
folder3
উত্তর:
আপনি কি গাছের সন্ধান করছেন ? এটি বেশিরভাগ বিতরণে থাকতে পারে (সম্ভবত একটি installচ্ছিক ইনস্টল হিসাবে)।
~> 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
ফাইলগুলি প্রদর্শন করতে সরান ।
-d
ফাইলগুলি প্রদর্শন করতেও সরান !
brew install tree
apt-cyg install tree
(ধরে নিই যে আপনি অ্যাপট-সিগ ইনস্টল করেছেন)
apt-get install tree
এটি ইনস্টল করা হবে।
আপনি এটি ব্যবহার করতে পারেন:
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
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\// /g' -e 's/^/ /'
.git
?
find . | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
আপনার .Bashrc- এ হাসুর সমাধান যুক্ত করতে চেষ্টা করুন:
alias lst='ls -R | grep ":$" | sed -e '"'"'s/:$//'"'"' -e '"'"'s/[^-][^\/]*\//--/g'"'"' -e '"'"'s/^/ /'"'"' -e '"'"'s/-/|/'"'"
alias lst='ls -R | grep ":$" | sed -e '"'"'s/:$//'"'"' -e '"'"'s/[^-][^\/]*\//--/g'"'"' -e '"'"'s/^/ /'"'"' -e '"'"'s/-/|/'"'"''
এই কমান্ডটি ফোল্ডার এবং ফাইল উভয়ই প্রদর্শন করতে কাজ করে ।
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 থেকে মন্তব্য এখানে । এটি একটি মন্তব্য হিসাবে নিমজ্জিত এবং উত্তর হিসাবে এটি পোস্ট করা ব্যবহারকারীদের এটি সহজেই স্পট করতে সহায়তা করে।
find . |grep -vE 'pyc|swp|__init' | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
ভালভাবে কাজ করতে পেলাম
আমি @ হাসুর উত্তরের সাথে আউটপুটটি সুন্দর করে দিচ্ছি:
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/├/└/\''
বিটিডাব্লু, tree
কিছু পরিবেশে যেমন মিনজিডব্লিউ উপলব্ধ নয়। সুতরাং বিকল্প সহায়ক।
ডিরেক্টরি ট্রি মুদ্রণের জন্য আপনি ফাইন্ড এবং অ্যাডক কমান্ডের সংমিশ্রণটিও ব্যবহার করতে পারেন। বিশদগুলির জন্য, দয়া করে " লিনাক্স ফাইন্ড এবং অ্যাডক মিলিত কমান্ডগুলি ব্যবহার করে মাল্টিলেভেল ট্রি ডিরেক্টরি কাঠামো কীভাবে প্রিন্ট করবেন " দেখুন
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;
}}'
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]"