# Linux

লিনাক্স ls কমান্ডের ১০টি ফ্ল্যাগ: ফাইল খোঁজা হবে সেকেন্ডে

লিনাক্স টার্মিনালে ls কমান্ডের আউটপুট — LS COMMAND, 10 TRICKS

[tldr] সংক্ষেপে: শুধু ls দিলে নাম দেখায়। -lh দিলে সাইজ পড়তে পারবেন, -lt দিলে নতুন ফাইল আগে, -lS দিলে সবচেয়ে বড় ফাইল আগে, -v দিলে ভার্সন নম্বর ঠিকভাবে সাজে, --time-style=long-iso দিলে তারিখ সবসময় একই ফরম্যাটে আসে, আর --group-directories-first দিলে ফোল্ডার আগে দেখায়। আলাদা কিছু ইনস্টল করতে হয় না — Ubuntu, Debian, RHEL, Rocky ও AlmaLinux-এ GNU coreutils-এর সঙ্গেই এগুলো আসে। [/tldr]

[howto_callout type="tip"] বুকমার্ক করে রাখুন (🔖): নতুন সার্ভারে ঢুকলেই বা লগ-ব্যাকআপের ভিড়ে এই ফ্ল্যাগগুলো বারবার দরকার হবে। উপরে ডান দিকের বুকমার্ক বাটনে চাপ দিন। [/howto_callout]

কেন ls-ই যথেষ্ট (বেশিরভাগ সময়)

অনেকে ls -la দিয়েই থেমে যান। তারপর কোন ফাইলটা নতুন? বা কোনটা ডিস্ক খাচ্ছে? — এই সহজ প্রশ্নের উত্তর পেতে sort, awk, stat আর তিনটা পাইপ জোড়া দেন। GNU ls নিজেই উত্তর দিতে পারে।

আগে দেখে নিন আপনার সিস্টেমে GNU coreutils আছে:

ls --version
# ls (GNU coreutils) 9.4

Ubuntu 26.04 থেকে ডিফল্ট হিসেবে uutils coreutils (Rust-এ লেখা) আসতে পারে। সাধারণ ফ্ল্যাগ একইভাবে কাজ করে, তবে --zero বা --hyperlink জাতীয় নতুন অপশন আলাদা আচরণ করতে পারে, স্ক্রিপ্টে ব্যবহারের আগে পরীক্ষা করুন।

যে ৫টি ফ্ল্যাগ আপনার আগেই জানা উচিত

ফ্ল্যাগকাজউদাহরণ
-lবিস্তারিত: পারমিশন, মালিক, সাইজ, তারিখls -l
-aহিডেন ফাইলসহ (.bashrc, .env)ls -la
-hমানুষের পড়ার উপযোগী সাইজ (K, M, G)ls -lh
-tসর্বশেষ পরিবর্তিত আগেls -lt
-Sসবচেয়ে বড় ফাইল আগেls -lS

এগুলো একসঙ্গেও চলে: ls -lht = বিস্তারিত + নতুন আগে + পড়ার উপযোগী সাইজ; আর ls -lhS | head -5 = এই ফোল্ডারের পাঁচটি বড় ফাইল।

১. তারিখ সবসময় এক ফরম্যাটে: --time-style

ls -l --time-style=long-iso
# -rw-r--r-- 1 deploy deploy 2.0M 2026-11-06 14:22 backup.sql

ডিফল্টে নতুন ফাইলে সময় আর পুরোনো ফাইলে শুধু বছর দেখায়, তুলনা করা কঠিন। সেকেন্ড ও টাইমজোন দরকার হলে --time-style=full-iso, নিজের ফরম্যাট চাইলে --time-style=+'%d %b %Y %H:%M'।

echo 'export TIME_STYLE=long-iso' >> ~/.bashrc
source ~/.bashrc

২. ফাইল তৈরির আসল সময়: --time=birth

ls -l --time=birth --time-style=long-iso notes.txt

ls -l দেখায় mtime (শেষ পরিবর্তনের সময়), তৈরির সময় নয়। ফাইলসিস্টেম বা কার্নেল জন্ম-সময় না রাখলে ডেটের জায়গায় ড্যাশ (-) দেখাবে, এটা স্বাভাবিক।

৩. ভার্সন অনুযায়ী সাজানো: -v

ls -1v
# app-1.9.tar.gz
# app-1.10.tar.gz
# app-1.11.tar.gz

বর্ণানুক্রমে app-1.10-এর আগে app-1.9 আসে, ভুল। -v দিলে সংখ্যা অনুযায়ী সাজে, ফলে ব্যাকআপের ভিড়ে নতুন রিলিজ সাথে সাথে চোখে পড়ে।

৪. যা দরকার সেই অনুযায়ী সাজান: --sort

ls --sort=size -lh   # বড় আগে
ls --sort=time -lh   # নতুন আগে (-t এর সমান)
ls --sort=extension   # ফাইলের ধরন অনুযায়ী
ls --sort=none     # কোনো সাজানো নেই, বিশাল ফোল্ডারে দ্রুততম

৫. ফোল্ডার আগে, ফাইল পরে: --group-directories-first

ls -lh --group-directories-first

প্রজেক্ট ফোল্ডারে ডিরেক্টরিগুলো উপরে থাকলে এক নজরেই বোঝা যায় কোথায় কী আছে।

৬. ফাইলের ধরন চিহ্ন দিয়ে: -F

ls -F
# deploy.sh* docs/ logs/ backup.sql notes.txt

* = এক্সিকিউটেবল, / = ডিরেক্টরি, @ = সিমলিংক, = = সকেট।

৭. কমা দিয়ে আলাদা তালিকা: -m

ls -m *.conf
# nginx.conf, php.ini, redis.conf

চ্যাট, টিকিট বা কনফিগ লাইনে ফাইলের তালিকা পেস্ট করতে সুবিধা।

৮. সংখ্যায় মালিকানা: -n

ls -ln
# -rw-r--r-- 1 1000 1000 6 Nov 6 14:22 notes.txt

নামের বদলে UID/GID দেখায়, সার্ভার বদল বা কন্টেইনারে পারমিশন গোলমাল হলে এটাই দরকার।

৯. স্ক্রিপ্টের জন্য নিরাপদ নাম: --zero

ls --zero -t -- *.txt | xargs -0 wc -c

my report.txt ধরনের নামে স্পেস থাকলে সাধারণ আউটপুট ভেঙে যায়। --zero নামের মাঝে নতুন লাইনের বদলে null ক্যারেক্টার বসায়, তাই xargs -0 নিরাপদে কাজ করে। পুরো ট্রি ঘুরতে হলে find. -maxdepth 1 -type f -name '*.txt' -print0 | xargs -0 wc -c বেশি নিরাপদ।

১০. বিশাল ফোল্ডারে গতি: -U ও -f

ls -U | head
ls -f

লক্ষাধিক ফাইল থাকলে সাজানোই সময় নেয়। -U সাজানো বন্ধ করে সঙ্গে সঙ্গে আউটপুট দেয়, -f রঙ ও অতিরিক্ত stat কলও বন্ধ করে।

প্রতিদিনের জন্য ৪টি অ্যালিয়াস

export TIME_STYLE=long-iso
alias ll='ls -lh --group-directories-first'
alias lt='ls -lht'
alias lv='ls -1v'

অ্যালিয়াস শুধু ইন্টারঅ্যাকটিভ শেলে কাজ করে। স্ক্রিপ্ট বা cron ~/.bashrc লোড করে না, তাই স্ক্রিপ্টের ভেতরে পুরো ফ্ল্যাগ লিখুন, নইলে অন্য সার্ভারে command not found দেখাবে।

একটাই ভুল যা করবেন না

স্ক্রিপ্টে ফাইলের নাম বের করতে ls-এর আউটপুট পার্স করবেন না, স্পেস, নতুন লাইন বা অদ্ভুত ক্যারেক্টার থাকলে চুপচাপ ভুল ফল আসবে। find... -print0 বা shell glob ব্যবহার করুন; ls রাখুন চোখে দেখার জন্য।

সাধারণ প্রশ্ন

কোন ফ্ল্যাগ সব লিনাক্সে কাজ করে?

POSIX ls-এ নিশ্চিত: -l, -a, -t, -r, -R, -F, -i। --time-style, --zero, --group-directories-first, এগুলো GNU-নির্দিষ্ট। macOS-এ brew install coreutils করে gls ব্যবহার করুন।

শুধু হিডেন ফাইল দেখব কীভাবে?

ls -d.[!.]* দিলে . ও .. ছাড়া ডটফাইল দেখায়। সাধারণ লিস্টিংয়ে -A দিলে হিডেন ফাইলসহ সব আসে (দুই ডিরেক্টরি রেফারেন্স ছাড়া)।

ls-এ সময় আর ফাইলের তৈরির সময় আলাদা কেন?

কারণ -l ডিফল্টে mtime দেখায়। তৈরির সময়ের জন্য --time=birth, অ্যাক্সেস ও inode পরিবর্তনের জন্য --time=atime বা --time=ctime দিন।


সম্পর্কিত গাইড

একই বিষয়ের সংক্ষিপ্ত, যাচাই করা গাইড: