Exibir apenas arquivos e pastas que são links simbólicos em tcsh ou festa
Pergunta
Basicamente eu quero fazer o seguinte:
ls -l[+someflags]
(ou por outros meios) que só irá exibir arquivos que são links simbólicos
então a saída seria
-rw-r--r-- 1 username grp size date-time filename -> somedir
-rw-r--r-- 1 username grp size date-time filename2 -> somsdfsdf
etc.
Por exemplo,
para mostrar apenas diretórios eu tenho um apelido:
alias lsd 'ls -l | grep ^d'
Gostaria de saber como exibir apenas arquivos ocultos ou somente diretórios ocultos?
Eu tenho a seguinte solução, no entanto, não exibir a saída de cor: (
ls -ltra | grep '\->'
Solução
Encontre todos os links simbólicos em um diretório:
ls -l `find /usr/bin -maxdepth 1 -type l -print`
Para a listagem de arquivos escondidos:
ls -ald .*
Outras dicas
ls -l | grep lrw
mostra apenas links simbólicos (arquivos e diretórios). Não tenho certeza como obtê-los colorido, apesar de tudo.
ls -lad .*
Mostra somente os arquivos ocultos / diretórios
ls -l | grep drw
Mostra diretórios somente.
Por apenas "escondido" pastas - as pastas ponto, tentar:
ls -l .**
Sim, os dois asteriscos são necessárias, caso contrário você vai também obter. e .. nos resultados.
Para links simbólicos, bem, tente o programa de links simbólicos:
symlinks -v .
(mostra todos os links simbólicos sob o diretório atual)
Para exibir apenas os links simbólicos e que eles conectar-se a:
find -P . -type l -exec echo -n "{} -> " \; -exec readlink {} \;
Para limitar apenas a este DIR
find -P . -maxdepth 1 -type l -exec echo -n "{} -> " \; -exec readlink {} \;
Exemplo de saída (após ln -s / usr / bin moo):
./moo -> /usr/bin
Você estava quase lá com a sua solução grep; Vamos nos concentrar em obter-lhe cor de novo.
Tente isto:
ls --color=always -ltra | grep '->'
Melhorar um pouco sobre a resposta aceita dada pelo @ChristopheD (comentário coudnt na resposta aceita desde que eu não tenho reputação suficiente)
Eu uso um alias
findsymlinks <path> <depth>
onde o alias é
alias findsymlinks "find \!:1 -maxdepth \!:2 -type l -print | xargs ls -l --color=auto"
Tente tipo flag arquivo e se livrar da acrescentando @
ls -F /home/usr/foo | grep "@" | sed 's/@//'
Para (t) csh :
ls --color=always -ltra | grep '\->'
(Isto é simplesmente da PBR resposta mas com o hífen escapou.)
Mac OSX
No OSX, ls
funciona de forma diferente, então adicioná-lo ao seu arquivo ~/.cshrc
:
setenv CLICOLOR_FORCE 1 # (equivalent of Linux --color=always)
E, em seguida, ligue para:
ls -G -ltra | grep '\->' # (-G is equivalent of ls --color)
Para bash:
Este fornece uma saída agradável.
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
Este bom funciona para mim no entanto, se você vai estar procurando / a raiz do sistema de arquivos você precisará omitir o diretório proc
Uso: foo $ path
Usa caminho atual se nenhum especificado.
#!/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