Ответ 1
Найти все символические ссылки в каталоге:
ls -l `find /usr/bin -maxdepth 1 -type l -print`
Список скрытых файлов:
ls -ald .*
В основном я хочу сделать следующее:
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 .**
Да, нужны две звездочки, иначе вы также получите. и.. в результатах.
Для символических ссылок, попробуйте программу symlinks:
symlinks -v .
(показывает все символические ссылки в текущем каталоге)
ls -l | grep lrw
отображаются только символические ссылки (файлы и каталоги). Не уверен, как сделать их красочными, однако.
ls -lad .*
отображаются только скрытые файлы/каталоги
ls -l | grep drw
показывает только каталоги.
Чтобы отобразить 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
Вы были почти там с вашим решением grep; позвольте сосредоточиться на том, чтобы снова получить ЦВЕТ.
Попробуйте следующее:
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/@//'
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
Для (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)
Для bash:
Это обеспечивает хороший результат.
sl=`find -L /path/to/target -xtype l`; for links in $sl; do ls --color=always -ltra $links; done | sed 's/^/ /'
Использование: 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