Подтвердить что ты не робот

Отображать только файлы и папки, которые являются символическими ссылками в 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 '\->'
4b9b3361

Ответ 1

Найти все символические ссылки в каталоге:

ls -l `find /usr/bin -maxdepth 1 -type l -print`

Список скрытых файлов:

ls -ald .*

Ответ 2

Только для "скрытых" папок - точечных папок, попробуйте:

ls -l .**

Да, нужны две звездочки, иначе вы также получите. и.. в результатах.

Для символических ссылок, попробуйте программу symlinks:

symlinks -v .

(показывает все символические ссылки в текущем каталоге)

Ответ 3

ls -l | grep lrw 

отображаются только символические ссылки (файлы и каталоги). Не уверен, как сделать их красочными, однако.

ls -lad .* 

отображаются только скрытые файлы/каталоги

ls -l | grep drw

показывает только каталоги.

Ответ 4

Чтобы отобразить JUST символические ссылки и ссылки на них:

find -P . -type l -exec echo -n "{} -> " \; -exec readlink {} \;

Чтобы ограничить JUST THIS DIR

find -P .  -maxdepth 1 -type l -exec echo -n "{} -> " \; -exec readlink {} \;

Пример вывода (после ln -s/usr/bin moo):

./moo -> /usr/bin

Ответ 5

Вы были почти там с вашим решением grep; позвольте сосредоточиться на том, чтобы снова получить ЦВЕТ.

Попробуйте следующее:

ls --color=always -ltra | grep '->'

Ответ 6

Улучшение немного принятого ответа, данного @ChristopheD (комментарий coudnt для принятого ответа, так как у меня недостаточно репутации)

Я использую псевдоним

findsymlinks <path> <depth> 

где псевдоним

alias findsymlinks "find \!:1 -maxdepth \!:2 -type l -print | xargs ls -l --color=auto" 

Ответ 7

Попробуйте флаг типа файла и избавьтесь от добавления @

ls -F /home/usr/foo | grep "@" | sed 's/@//'

Ответ 8

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

Это полезно для меня, однако, если вы будете искать/корневой файловой системы, вам нужно будет опустить каталог proc

Ответ 9

Для (t) csh:

ls --color=always -ltra | grep '\->'

(Это просто ответ pbr, но с дефисэкономленным.)

Mac OSX

В OSX ls работает по-другому, поэтому добавьте это в свой ~/.cshrc файл:

setenv CLICOLOR_FORCE 1   # (equivalent of Linux --color=always)

И затем вызовите:

ls -G -ltra | grep '\->'  # (-G is equivalent of ls --color)

Ответ 10

Для bash:
Это обеспечивает хороший результат.

sl=`find -L /path/to/target -xtype l`; for links in $sl; do ls --color=always -ltra $links; done | sed 's/^/    /'

Ответ 11

Использование: foo $path

Использует текущий путь, если он не указан.

#!/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