اعرض فقط الملفات والمجلدات التي تمثل روابط رمزية في tcsh أو bash
سؤال
في الأساس أريد القيام بما يلي:
ls -l[+someflags]
(أو بأي وسيلة أخرى) والتي ستعرض فقط الملفات التي تمثل روابط رمزية
لذلك سيبدو الإخراج
-rw-r--r-- 1 username grp size date-time filename -> somedir
-rw-r--r-- 1 username grp size date-time filename2 -> somsdfsdf
إلخ.
على سبيل المثال،
لإظهار الدلائل فقط لدي اسم مستعار:
alias lsd 'ls -l | grep ^d'
أتساءل كيف يتم عرض الملفات المخفية فقط أم الدلائل المخفية فقط؟
لدي الحل التالي، لكنه لا يعرض الإخراج بالألوان :(
ls -ltra | grep '\->'
المحلول
والبحث عن الروابط رمزية في الدليل:
ls -l `find /usr/bin -maxdepth 1 -type l -print`
لإدراج الملفات المخفية:
ls -ald .*
نصائح أخرى
ls -l | grep lrw
ويظهر الوحيدة روابط الرمزية (الملفات والدلائل). غير متأكد من كيفية الحصول عليها الملونة، وبالرغم من ذلك.
ls -lad .*
ويظهر فقط الملفات المخفية / الدلائل
ls -l | grep drw
ويظهر الدلائل فقط.
لفقط "الخفية" المجلدات - مجلدات نقطة، في محاولة:
ls -l .**
نعم، ضرورية العلامات النجمية اثنين، وإلا عليك أيضا الحصول عليها. و.. في النتائج.
لروابط الرمزية، وأيضا، في محاولة البرنامج روابط الرمزية:
symlinks -v .
و(يعرض جميع روابط الرمزية تحت الدليل الحالي)
لعرض فقط على روابط الرمزية وما تصل إلى:
find -P . -type l -exec echo -n "{} -> " \; -exec readlink {} \;
للحد من هذا فقط DIR
find -P . -maxdepth 1 -type l -exec echo -n "{} -> " \; -exec readlink {} \;
والانتاج مثال (بعد قانون الجنسية -s / البيرة / بن مو):
./moo -> /usr/bin
لقد كنت هناك تقريبا مع حل البقرى الخاص بك؛ دعونا نركز على الحصول على لك اللون مرة أخرى.
وجرب هذا:
ls --color=always -ltra | grep '->'
وتحسين قليلا على الاجابة المقبولة التي قدمهاChristopheD (coudnt تعليق على الاجابة قبلت منذ أن كنت لا تملك ما يكفي من سمعة)
وأنا استخدم اسم مستعار
findsymlinks <path> <depth>
وحيث الاسم المستعار هو
alias findsymlinks "find \!:1 -maxdepth \!:2 -type l -print | xargs ls -l --color=auto"
وحاول نوع الملف العلم والتخلص من إلحاق @
ls -F /home/usr/foo | grep "@" | sed 's/@//'
من أجل (ر) Csh:
ls --color=always -ltra | grep '\->'
(هذا بكل بساطة إجابة pbr ولكن مع الواصلة هرب.)
ماك أو إس إكس
على أو إس إكس، ls
يعمل بشكل مختلف، لذا قم بإضافة هذا إلى ملفك ~/.cshrc
ملف:
setenv CLICOLOR_FORCE 1 # (equivalent of Linux --color=always)
ومن ثم اتصل:
ls -G -ltra | grep '\->' # (-G is equivalent of ls --color)
للباش:
وهذا يوفر مخرجات لطيفة.
sl=`find -L /path/to/target -xtype l`; for links in $sl; do ls --color=always -ltra $links; done | sed 's/^/ /'
echo > linklist.found && $(for i in `find /path/to/dir/ -type l`; do echo `ls -d --color=always $i` `echo " -> "` $(ls -d --color=always `readlink -f $i`) >> linklist.found; echo >> linklist.found; done;) && cat linklist.found | more
وهذا يعمل جيدا بالنسبة لي ولكن إذا كنت سوف يكون البحث / جذر نظام الملفات سوف تحتاج إلى حذف الدليل بروك
والاستخدام: فو $ مسار
ويستخدم المسار الحالي في حال عدم تحديد.
#!/bin/bash
case "$1" in
-r)
find $2 -type l -print | while IFS= read line ; do ls -l --color=always "$line"; done
;;
--help)
echo 'Usage: foo [-r] [$PATH]'
echo
echo '-r Recursive'
;;
*)
ls --color=always -ltra $1 | grep '\->'
esac