اعرض فقط الملفات والمجلدات التي تمثل روابط رمزية في tcsh أو bash

StackOverflow https://stackoverflow.com/questions/1412423

  •  06-07-2019
  •  | 
  •  

سؤال

في الأساس أريد القيام بما يلي:

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top