Esta pergunta fala sobre como encontrar diretórios em um diretório atual. A solução é basicamente:
ls -d */
Isso é ótimo, mas como posso facilmente listar links simbólicos? Eu tenho que usar algo como
find . -xtype l -d 1
(intended to find symlinks max depth 1 - doesn't work)
Ou existe um caminho mais facil? Posso ser usado para isso?
man find
programas-d
é sinônimo de-depth
(para compatibilidade com FreeBSD, NetBSD, MacOS X e OpenBSD.), Ou seja. não é o mesmo que-maxdepth
. . .-depth
Processar o conteúdo de cada diretório antes do diretório em siRespostas:
No zsh (adicione
N
entre parênteses para incluir links simbólicos cujo nome começa com a.
):Com a maioria das
find
implementações:Compatível com POSIX:
Ou com um loop de shell:
fonte
-prune
opção, você precisa usarfind topdir ! -name topdir -prune
; caso contrário, o diretório inicial também será ignorado.Isso não está em um Mac, mas
funciona para mim.
fonte
Você deve estar usando
-type
e não-xtype
:O padrão é que
-P
, portanto, a opção -xtype tentará determinar o arquivo resultante, não o link simbólico em si. Na verdade, eu recebo alguns resultados positivos, o que parece um bug. O-P -xtype l
retorno deve ser verdadeiro (em um link simbólico) se o resultante for um link simbólico.Também pode usar:
ls -FA | sed -ne 's/@//p'
que exibirá apenas os links simbólicos.fonte
sed -ne 's/@//p'
(e mesmosed -ne 's/@$//p'
) não é um teste seguro, pois a primeira versão dará um falso positivo quando@
ocorrer em qualquer lugar na saída ls , e a segunda retornará uma falsa positiva quando um nome de arquivo realmente terminar em@
Para descobrir apenas os arquivos que são links simbólicos dentro do diretório atual:
Isso listará recursivamente todos os arquivos de link simbólico. Além disso, mostra os arquivos reais para os quais aponta.
fonte