exibir apenas arquivos começando com. (escondido)

11

Tentei exibir apenas arquivos ocultos, mas não sei como fazê-lo.

Isso está funcionando (mas combinando também pontos em outros lugares)

ls -la | grep '\.'

Estava tentando adicionar, ^mas não encontrou a solução.

user3014282
fonte
1
A análise lsnunca é uma ideia maravilhosa, mas o que você tentou teria funcionado se você usasse a âncora ^para indicar o início da partida. ls -la | grep '^\.'
devnull
3
Não, não será, o nome do arquivo não é o começo da linha com o sinalizador -l. ls -la | awk '$9 ~ /^\./'vai.
Yoonix 9/04

Respostas:

18

ls -ld .* fará o que você quiser.

Flup
fonte
4
find . -type f -name '\.*' -print 

Deve funcionar se você quiser listar todos os arquivos ocultos na hierarquia de diretórios.

periket2000
fonte
2

Se você deseja analisar a lssaída, adicione ^no início do regex e não use a -lopção O uso -lfaz com que cada saída de linha comece com informações de permissão de arquivo ou pasta, não o nome do arquivo ou da pasta. Então você deve usar assim:

ls -Ad | grep '^\.'

Ou você pode fazer com o printfbash embutido:

printf "%s\n" .*

Se você usa zsh, pode usar:

print -l .*
cuonglm
fonte
1

Aqui estão duas outras maneiras de encontrar apenas arquivos ocultos.

find . -maxdepth 1 -name ".*" -type f -ls

ou

find . -maxdepth 1 -name ".*" -type f -printf "%P \n"

Use -maxdepthpara especificar até onde você deseja pesquisar na árvore de diretórios.

Valentin Bajrami
fonte
1

Uma melhoria na resposta de Flup :

ls -lad .[!.]* ..?*

Isso listará todos os arquivos cujo nome começa com um ponto e que não são nem .nem ...

Note que se você deseja canalizar a saída de lspara grep(que, como apontado por devnull , nunca é uma boa idéia), certifique-se de usar \lsou command lsporque se lshouver um alias para mostrar a saída colorida (como no Debian, por exemplo) , sua saída contém seqüências de escape ANSI para criar uma saída colorida, que disparará sua grepse seu padrão for ancorado no início da linha.

Joseph R.
fonte
1
Você pode usar -A(em vez de -a) a ignorar ., ...
OJFord 3/17
O @ OJFord + -Adifere dos -adiretórios que lsdescem, mas ambos são (igualmente) ignorados e inúteis para nomes especificados na linha de comando com -defeito. Além disso, se lsfor aliasado, --color=auto então a tubulação está correta; apenas --color=alwaysou --colorcausa problemas.
David_thompson_085
0

A solução de val0x00ff é realmente boa, mas esquece diretórios ocultos.

Se você deseja arquivos e diretórios ocultos , sem. e ..:

find -maxdepth 1 -regex '\./\..+' -printf "%P\n"
piroux
fonte
Sua sugestão falha no VMware ESXi (lista nenhum arquivo e nenhum diretório) e também falha no Linux (com maxdepth> 1, ele também lista todos os arquivos em um diretório começando com a.), Mas isso funciona no Linux e no ESXi: find . \( -type f -o -type d \) -name '\.*' -print; aplique maxdepthonde for necessário.
Jeroen Wiert Pluimers
0

Abaixo um é muito compacto e suporta muitas variantes

1) Exibir arquivos, diretórios e subdiretórios ocultos

find . | grep "^\./\."

2) Exibir apenas diretórios e subdiretórios ocultos

find . -type d | grep "^\./\."

3) Exibir arquivos ocultos apenas nos subdiretórios atuais e

find . -type f | grep "^\./\."

4) Exibir arquivos e diretórios ocultos na pasta atual

find . -maxdepth 1 | grep "^\./\."

GLK
fonte
0

Podes tentar:

find . -maxdepth 1 -type f -name '\.*' -print
find . -maxdepth 1 \( -type f -o -type d \) -name '\.*' -print

Claro que você pode usar maxdepthvalores diferentes ou removê-lo completamente. Muito útil se você deseja explorar entre diretórios ( -type d) ou arquivos regulares ( type f) ou ambos, e combinar com outras funções, como:

(por exemplo, horário da última modificação, com base no exemplo @piroux - preenchido por @ jeroen-wiert-pluimers )

find . -maxdepth 1 \( -type f -o -type d \) -name '\.*' -exec stat -c %y {} \; -printf "%P\t"
azbarcea
fonte
-1

Podes tentar :

ls -a |grep -E  "^\."

^ indica que é o começo do conteúdo com regexp

Lingjing França
fonte
1
Uma duplicata de outra resposta de 3 anos atrás ...
Jeff Schaller
Eu vi a resposta anterior, não é duplicada e, definitivamente, "ls -a" e "ls -Ad" não têm o mesmo significado. "-a" significa listar todos os arquivos / diretórios, incluindo "." -A significa listar tudo, exceto excluir "." , ".." e conteúdo do diretório.
Lingjing France 28/11