এলএস মানুষের ব্যবহারের জন্য ডিজাইন করা হয়েছে এবং আপনার ফলাফলটিকে পার্স করা উচিত নয় ।
শেল স্ক্রিপ্টগুলিতে, কয়েকটি ক্ষেত্রে রয়েছে যেখানে ls এর আউটপুটকে পার্সিং করা পছন্দসই প্রভাব অর্জনের সহজতম উপায় of যেহেতু ls ফাইল-নামগুলিতে অ-এএসসিআইআই এবং নিয়ন্ত্রণ অক্ষরগুলিকে মঙ্গোল করতে পারে, এই কেসগুলি সেগুলির একটি উপসেট যা থেকে কোনও ফাইলের নাম গ্রহণের প্রয়োজন হয় না ls
।
অজগর, অনুরোধ করার কোন কারণ নেই ls
। পাইথনের ls
বিল্ট-ইন এর সমস্ত কার্যকারিতা রয়েছে। ব্যবহার করুন os.listdir
একটি ডিরেক্টরির বিষয়বস্তু তালিকা এবং os.stat
বা os
ফাইলগুলির মেটাডেটা প্রাপ্ত। os
মডিউলগুলির অন্যান্য ক্রিয়াগুলিও আপনার সমস্যার সাথে সম্পর্কিত হতে পারে।
আপনি যদি ssh- র মাধ্যমে দূরবর্তী ফাইলগুলিতে অ্যাক্সেস করে থাকেন তবে ফাইলের নাম তালিকাভুক্ত করার পক্ষে যুক্তিযুক্ত শক্তিশালী উপায়টি এসফটিপি মাধ্যমে:
echo ls -1 | sftp remote-site:dir
এটি প্রতি লাইনে একটি ফাইলের নাম মুদ্রণ করে এবং ls
ইউটিলিটির বিপরীতে , sftp
মুদ্রণযোগ্য অক্ষরগুলিকে ম্যাঙ্গেল করে না। আপনি এখনও নির্ভরযোগ্যভাবে ডিরেক্টরি তালিকাতে সক্ষম হবেন না যেখানে কোনও ফাইলের নামটিতে একটি নতুন লাইন রয়েছে তবে এটি খুব কমই সম্পন্ন হয়েছে (এটি কোনও সম্ভাব্য সুরক্ষা সমস্যা হিসাবে ব্যবহারযোগ্যতার সমস্যা হিসাবে নয়) মনে রাখবেন)।
পাইথনে (সাবধান যে শেল মেটাচার্যাক্টর অবশ্যই এতে পালাতে হবে remote_dir
):
command_line = "echo ls -1 | sftp " + remote_site + ":" + remote_dir
remote_files = os.popen(command_line).read().split("\n")
আরও জটিল মিথস্ক্রিয়াগুলির জন্য ডকুমেন্টেশনে sftp এর ব্যাচ মোডটি সন্ধান করুন।
কিছু সিস্টেমে (লিনাক্স, ম্যাক ওএস এক্স, সম্ভবত কিছু অন্যান্য ইউনিস, তবে অবশ্যই উইন্ডোজ নয়), sshfs এর মাধ্যমে ssh এর মাধ্যমে একটি রিমোট ফাইল সিস্টেম মাউন্ট করা এবং তারপরে স্থানীয়ভাবে কাজ করা একটি ভিন্ন পদ্ধতির ।