رفتن به محتوا
LoopX

آزمون بخش ۲: فایل‌ها و پوشه‌ها

این آزمون هفت درس بخش «فایل‌ها و پوشه‌ها» را می‌سنجد. جواب هر سؤال همان لحظه با توضیح نشان داده می‌شود و نتیجه‌ات در همین مرورگر ذخیره می‌شود (پیشرفت من).

؟ آزمون بخش ۲
  1. تنظیمات سیستم و برنامه‌ها معمولاً در کدام پوشه است؟

  2. لاگ‌ها و داده‌ی متغیر مثل دیتابیس معمولاً کجاست؟

  3. /proc چیست؟

  4. اصل «همه‌چیز فایل است» یعنی…

  5. مسیر مطلق با چه چیزی شروع می‌شود؟

  6. اگر در /home/ali/projects/web/css هستی، cd ../../api به کجا می‌رود؟

  7. cd - چه می‌کند؟

  8. کدام دستور مسیر تو در تو را یکجا می‌سازد؟

  9. echo *.txt را چه کسی با اسم فایل‌ها جایگزین می‌کند؟

  10. rm بعد از اجرا…

  11. برای دیدن ۲۰ خط آخر یک لاگ و دنبال کردن خط‌های تازه؟

  12. در vim برای شروع تایپ چه می‌کنی؟

  13. بعد از ln a.txt b.txt و rm a.txt چه می‌شود؟

  14. کدام دستور همه‌ی فایل‌های بزرگ‌تر از ۱۰۰ مگابایت را پیدا می‌کند؟

  15. قبل از find ... -delete چه کار می‌کنی؟

🏁 چالش: سامان دادن یک پوشه‌ی بی‌نظممتوسط

یک پوشه‌ی downloads پر از فایل‌های درهم داری. با دستورهای همین بخش آن را مرتب کن:

۱. با یک دستور mkdir ساختار sorted/{images,docs,archives} را بساز. ۲. همه‌ی عکس‌ها (.jpg، .JPG، .png) را با find (بی‌حساس به حروف) به sorted/images منتقل کن. ۳. فایل‌های .pdf و .txt را به sorted/docs ببر (با wildcard). ۴. فایل‌هایی بزرگ‌تر از ۵۰ مگابایت را پیدا کن، به sorted/archives منتقل کن و در downloads یک symlink به آن‌ها بگذار. ۵. فایل‌های .tmp قدیمی‌تر از ۷ روز را اول فهرست کن و بعد حذف کن. ۶. درخت نهایی sorted را (مرتب) چاپ کن و تعداد فایل‌های هر پوشه را بشمار.

راهنمایی

برای انتقال با find: find downloads -type f \( -iname "*.jpg" -o -iname "*.png" \) -exec mv {} sorted/images/ \;. برای فایل‌های بزرگ: -size +50M. برای قدیمی‌ها: -mtime +7.

راه‌حل
Terminal window
# آماده‌سازی پوشه‌ی بی‌نظم
mkdir downloads && cd downloads
touch a.jpg b.JPG c.png report.pdf notes.txt todo.txt old.tmp new.tmp
truncate -s 80M movie.iso
touch -d "10 days ago" old.tmp
cd ~
# ۱) ساختار
mkdir -p sorted/{images,docs,archives}
# ۲) عکس‌ها
find downloads -type f \( -iname "*.jpg" -o -iname "*.png" \) -exec mv {} sorted/images/ \;
# ۳) سند‌ها
mv downloads/*.pdf downloads/*.txt sorted/docs/
# ۴) فایل‌های بزرگ + symlink
find downloads -type f -size +50M -exec mv {} sorted/archives/ \;
ln -s ../sorted/archives/movie.iso downloads/movie.iso
# ۵) tmp های قدیمی: پیش‌نمایش و حذف
echo "نامزدهای حذف:"; find downloads -name "*.tmp" -mtime +7
find downloads -name "*.tmp" -mtime +7 -delete
# ۶) نتیجه
echo "--- درخت sorted:"; find sorted | sort
echo "--- تعداد فایل‌ها:"
for d in images docs archives; do echo "$d: $(find sorted/$d -type f | wc -l)"; done
echo "--- باقی‌مانده در downloads:"; ls -l downloads | awk 'NR>1{print $9, $10, $11}'
خروجی
نامزدهای حذف:
downloads/old.tmp
--- درخت sorted:
sorted
sorted/archives
sorted/archives/movie.iso
sorted/docs
sorted/docs/notes.txt
sorted/docs/report.pdf
sorted/docs/todo.txt
sorted/images
sorted/images/a.jpg
sorted/images/b.JPG
sorted/images/c.png
--- تعداد فایل‌ها:
images: 3
docs: 3
archives: 1
--- باقی‌مانده در downloads:
movie.iso -> ../sorted/archives/movie.iso
new.tmp