পিএইচপি, 180 বাইট
- প্রথম যুক্তি: পাথের অবশ্যই অবশ্যই একটি পিছনের স্ল্যাশ থাকতে হবে
- দ্বিতীয় যুক্তি: স্তরের ডিফল্ট
NULL
এবং এর 0
দ্বারা ব্যাখ্যা করা হবে str_repeat
; সরবরাহ না করা হলে একটি সতর্কতা নিক্ষেপ করবে
function d($p,$e){$s=opendir($p);echo$b=str_repeat("\t",$e++),$e?basename($p)."/":$p,"
";while($f=readdir($s))echo preg_match("#^\.#",$f)?"":is_dir($p.$f)?d("$p$f/",$e):"$b\t$f
";}
- প্রদর্শন গোপন ফাইল ও ডিরেক্টরিগুলি, কিন্তু না recurse গোপন ডিরেক্টরি করে
প্রথম বন্ধনী প্রায় যোগ is_dir(...)?d(...):"..."
আউটপুট (+2) থেকে লুকানো এন্ট্রি মুছে ফেলার জন্য
প্রতিস্থাপন "#^\.#"
সঙ্গে #^\.+$#
/ প্রদর্শনে গোপন এন্ট্রি recurse কিন্তু এন্ট্রি ডট লাফালাফি (+2)
- ডিরেক্টরিগুলি খুব গভীরভাবে বাসা বাঁধলে ত্রুটি ফেলে দিতে পারে। ঢোকান
closedir($s);
ফাইনালের আগে }
ফিক্স করার জন্য (+13)
- কোনও ডিরেক্টরিতে কোনও নাম ছাড়া কোনও ডিরেক্টরিতে কোনও এন্ট্রি থাকলে ব্যর্থ হয়ে যাবে
false!==
(+8)
গ্লোব সহ, 182 বাইট (ভবিষ্যতে পিএইচপি সম্ভবত 163)
function g($p,$e){echo$b=str_repeat("\t",$e),$e++?basename($p)."/":$p,"
";foreach(glob(preg_replace("#[*?[]#","[$1]",$p)."*",2)as$f)echo is_dir($f)?g($f,$e):"$b\t".basename($f)."
";}
- লুকানো ফাইল / ডিরেক্টরি প্রদর্শন বা পুনরাবৃত্তি করে না
2
এর অর্থ দাঁড়ায় GLOB_MARK
, সমস্ত ডিরেক্টরি নামের ক্ষেত্রে স্ল্যাশ যুক্ত হবেls -F
preg_replace
বেরিয়ে উল্লিখিত glob বিশেষ অক্ষর
আমি নির্যাতিত পারতেন preg_quote
(-19) এই জন্য; তবে এটি উইন্ডোজ সিস্টেমগুলিতে ব্যর্থ হবে, কারণ ব্যাকস্ল্যাশ সেখানে ডিরেক্টরি বিভাজক।
- পিএইচপি শীঘ্রই গ্লোব_কোটের একটি ফাংশন অন্তর্ভুক্ত করতে পারে , যা একই গল্ফিংকে
preg_quote
সমস্ত সিস্টেমে কাজ করার অনুমতি দেয় ।
পুনরাবৃত্তকারী, 183 বাইট
(ভাল, খাঁটি পুনরাবৃত্তকারী নয়: আমি SplFileInfo::__toString()
গল্ফ $f->getBaseName()
এবং $f->isDir()
পুরাতন পিএইচপি 4 ফাংশনগুলিতে অন্তর্নিহিত ব্যবহার করেছি ))
function i($p){echo"$p
";foreach($i=new RecursiveIteratorIterator(new RecursiveDirectoryIterator($p),1)as$f)echo str_repeat("\t",1+$i->getDepth()),basename($f),is_dir($f)?"/":"","
";}
- কোন পিছনে স্ল্যাশ প্রয়োজন
- লুকানো এন্ট্রিগুলি প্রদর্শন করে এবং পুনরাবৃত্তি করে (
ls -a
)
- ডট এন্ট্রিগুলি (+5) ( ) প্রবেশ করান
,4096
বা তার ,FilesystemIterator::SKIP_DOTS
আগে প্রবেশ করুন),1
ls -A
- পতাকা
1
দাঁড়িয়েছেRecursiveIteratorIterator::SELF_FIRST