العربية

حذف ملف أو مجلد في لينكس من سطر الأوامر

3 min
استضافة VPS/VDS

في نهاية هذا الدليل ستعرف كيف تحذف ملفًا، ومجلدًا فارغًا، وشجرة مجلدات كاملة، وملفات مختارة بحسب الاسم أو العمر، مع التحقق من الهدف في كل مرة قبل التنفيذ. لا توجد في لينكس سلة محذوفات في سطر الأوامر: الحذف نهائي. لذلك تهمّ طريقة العمل بقدر ما يهمّ الأمر نفسه.

المتطلبات

  • وصول إلى الطرفية (shell) على جهاز لينكس، محليًا أو عبر SSH، مثل خادم VPS لينكس
  • مستخدم يملك صلاحية الكتابة في المجلد المعني (أو صلاحية sudo)
  • نسخة احتياطية حديثة لكل ما هو مهم

تحقق من الهدف قبل الحذف

انتقل إلى المجلد الصحيح واعرض محتواه. يستغرق ذلك ثانيتين ويمنع معظم الحوادث.

Bash
pwd ls -la

إذا كنت تستخدم نمطًا (امتدادًا أو بادئة)، فاعرض أولًا ما سيشمله. سيستخدم الأمر rm القائمة نفسها بالضبط.

Bash
ls -d *.log

احذف ملفًا

الأمر الأساسي هو rm.

Bash
rm report.txt

أضف الخيار -i ليطلب تأكيدًا قبل الحذف، والخيار -v ليعرض ما يحذفه.

Bash
rm -iv report.txt

ثم تحقق بالأمر ls report.txt: ظهور رسالة «No such file or directory» يؤكد أن الملف حُذف.

احذف عدة ملفات

تتيح لك الرموز البديلة (wildcards) في الـ shell استهداف مجموعة من الملفات. اعرضها أولًا بـ ls ثم احذفها.

Bash
rm -v *.tmp rm -v photo_{01..05}.jpg

تجنّب استخدام رمز بديل مجرّد مثل rm * في مجلد لست متأكدًا منه. وإذا كان اسم الملف يبدأ بشرطة، فاستخدم -- للإشارة إلى نهاية الخيارات:

Bash
rm -- -strange-file.txt

احذف مجلدًا فارغًا

الأمر rmdir لا يحذف إلا المجلدات الفارغة. وهذا مقصود، فهو بمثابة حاجز أمان.

Bash
rmdir old_folder

لحذف المجلدات الأم التي أصبحت فارغة بدورها:

Bash
rmdir -p project/cache/tmp

احذف مجلدًا مع كل محتواه

يلزم هنا الخيار التكراري -r. قدّر أولًا حجم ما ستفقده.

Bash
du -sh old_project find old_project -type f | wc -l

ثم احذف مع طلب التأكيد:

Bash
rm -ri old_project

مع آلاف الملفات يصبح التأكيد المتكرر غير عملي. الخيار -f يعطّله:

Bash
rm -rf old_project

لا تضع أبدًا متغيرًا لم تتحقق منه داخل هذا الأمر. في rm -rf "$DIR"/ إذا كان $DIR فارغًا فإنك تستهدف الجذر. في السكربتات أضف set -u أو استخدم "${DIR:?}" الذي يوقف التنفيذ إذا كان المتغير فارغًا.

احذف الملفات بحسب عمرها

يفلتر الأمر find بمعايير دقيقة (الاسم، النوع، العمر، الحجم). القاعدة: شغّله أولًا دون أي إجراء، ثم أضف -delete.

Bash
find /var/log/myapp -type f -name "*.log" -mtime +30

إذا طابقت القائمة ما تتوقعه:

Bash
find /var/log/myapp -type f -name "*.log" -mtime +30 -delete

يعني -mtime +30 الملفات التي عُدّلت قبل أكثر من 30 يومًا. ضع -delete في النهاية: يقيّم find الشروط من اليسار إلى اليمين، وإذا وُضع -delete مبكرًا جدًا حذف كل شيء.

امسح ملفًا حساسًا بطريقة أكثر أمانًا

الأمر rm يزيل مدخل الملف، وليس بالضرورة البيانات من القرص. أما shred فيكتب فوق المحتوى قبل الحذف.

Bash
shred -u -v secret.key

لهذه الطريقة حدود على أقراص SSD وأنظمة الملفات ذات السجل (journaling) والأقراص التي تحتوي على لقطات (snapshots)، إذ قد تبقى بيانات قديمة. وفي حالة البيانات شديدة الحساسية، يبقى تشفير القرص منذ البداية هو الحل الموثوق.

عالج الأخطاء الشائعة

Permission denied

ليست لديك صلاحية الكتابة على المجلد الأب (هو الذي يتحكم في الحذف، وليس الملف نفسه). تحقق بالأمر ls -ld DIRECTORY، ثم استخدم sudo إن كان ذلك مشروعًا:

Bash
sudo rm -v /path/to/file

Operation not permitted حتى مع sudo

على الأرجح يحمل الملف السمة غير القابلة للتغيير (immutable). اعرضها، وأزلها، ثم احذف الملف.

Bash
lsattr file.txt sudo chattr -i file.txt sudo rm file.txt

Argument list too long

أنتج الرمز البديل عددًا من الوسائط يفوق ما يقبله النظام. استعن بـ find الذي يعالج الملفات واحدًا تلو الآخر:

Bash
find . -maxdepth 1 -type f -name "*.tmp" -delete

Directory not empty أو Device or resource busy

مع rmdir تُعدّ الرسالة الأولى طبيعية: المجلد يحتوي ملفات، بما فيها المخفية (ls -A). أما إذا كانت نقطة تحميل أو عملية تستخدمه، فحدّدها بالأمر lsof +D DIRECTORY أو findmnt، ثم حرّره قبل إعادة المحاولة.

للتدرّب دون مخاطرة، تفيدك بيئة مؤقتة: على خادم VPS يمكنك إنشاء مجلد تجريبي وارتكاب الأخطاء دون عواقب. وتجد أدلة أخرى من النوع نفسه في قسم الدروس التعليمية.

FAQ

هل يمكن استرجاع ملف حُذف بالأمر rm؟

نادرًا ودون ضمان. أدوات مثل extundelete أو testdisk تستعيد البيانات أحيانًا إذا توقفت عن الكتابة على القرص فورًا. الحماية الوحيدة الموثوقة هي النسخ الاحتياطي.

ما الفرق بين rm -r وrm -rf؟

الأمر rm -r يحذف بشكل تكراري لكنه يطلب تأكيدًا للملفات المحمية من الكتابة. أما rm -rf فيفرض الحذف ويتجاهل بصمت الملفات غير الموجودة. احتفظ به للحالات التي تحققت فيها من الهدف مسبقًا.

كيف أحذف مجلدًا يحتوي اسمه على مسافات؟

ضع الاسم بين علامتي اقتباس أو هرّب المسافات: rm -r "My folder" أو rm -r My\ folder. وبدون ذلك يعامل الـ shell كل كلمة على أنها عنصر مستقل.

هل توجد سلة محذوفات في سطر الأوامر؟

نعم، عبر الحزمة trash-cli (الأمر trash-put) التي تنقل العناصر إلى سلة المستخدم بدل مسحها. وهي نادرًا ما تكون مثبّتة افتراضيًا على الخوادم، فاعتد أن تعرض المحتوى قبل أن تحذف.

ابقَ على اطلاع بأحدث العروض والخصومات والعروض الترويجية الخاصة.

عرض العروض الترويجية

نستخدم ملفات تعريف الارتباط

نستخدم كوكيز تحليلية لتحسين تجربتك. لا نبيع البيانات لأطراف ثالثة. المزيد في سياسة الخصوصية.