Mostrar apenas arquivos ocultos (arquivos de pontos) no alias ls

40

Estou usando o comando

ls -a | grep '^\.'

para mostrar apenas os arquivos ocultos. Eu adicionei a linha

alias hidden='ls -a | grep '^\.'' # show only hidden files

para .bash_aliases file

mas isso não funciona. É provavelmente o problema com o caractere ' .

Você poderia me ajudar a escrever o alias correto?

    
por xralf 28.09.2011 / 20:01

10 respostas

24

Faça do par interno de aspas aspas duplas:

alias hidden='ls -a | grep "^\."'

Ou faça o par externo de aspas duplas:

alias hidden="ls -a | grep '^\.'"

Ou faça todas as aspas com aspas duplas e escape do par interno:

alias hidden="ls -a | grep \"^\.\""

Ou faça disso uma função, para poder passar alguns argumentos ao chamar:

hidden() { ls -a "$@" | grep '^\.'; }
    
por 28.09.2011 / 20:38
85

Faça com que o shell liste os arquivos de pontos e informe ls para não ver os diretórios:

ls -d .*
    
por 28.09.2011 / 23:49
9
ls -Ad .* #This will list all the hidden files & directories while retaining the color & formatting

OR

Para criar um alias do mesmo:

alias lh='ls -Ad .*'

OR

A mesma coisa pode ser feita via comando grep e operador de tubulação; no entanto, perderia a cor e a formatação:

ls -a|grep "^\." 

OR

Via alias:

alias lh='ls -a|grep "^\."'
    
por 26.08.2012 / 12:44
4

Você pode usar aspas duplas:

alias hidden="ls -a | grep '^\.'"

ou concatenar mais strings entre aspas simples

alias hidden='ls -a | grep '\''^\.'\'

ou remova em todas as citações internas

alias hidden='ls -a | grep ^\.'
    
por 28.09.2011 / 20:38
2

Para o registro, isso não parece funcionar comigo, pois ls -a imprime duas (às vezes mais colunas). Eu recomendaria usar a opção -1 para garantir que todos os arquivos estejam em sua própria linha. Algo parecido com isto:

alias hidden='ls -a1 | grep "^\."'
    
por 28.09.2011 / 20:44
1

Tornando um pouco mais complicado, mas evitando analisando ls .

llsh () { find "${@:-.}/" -maxdepth 1 -type f -name ".*" -ls; }

lsh () { find "${@:-.}/" -maxdepth 1 -type f -name ".*" -print; }

A função de dois shell usará find para gerar uma lista de todos os arquivos regulares ocultos no diretório atual ou no diretório fornecido na linha de comando.

A função llsh gerará uma "listagem longa", que será apenas um pouco mais detalhada que ls -l , enquanto lsh gerará uma listagem de coluna única como ls -1 .

    
por 05.05.2017 / 09:58
0

Seu ls suporta -A? De man ls :

    -a, --all
          do not ignore entries starting with .

   -A, --almost-all
          do not list implied . and ..

$ ls --version
ls (GNU coreutils) 8.5
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  
Written by Richard M. Stallman and David MacKenzie.
    
por 29.09.2011 / 05:16
0
find . -type f -name ".*"

OR

find . -type f -name ".*" | while read file; do basename $file; done
    
por 05.05.2017 / 00:14
-2

Simplesmente digite o comando abaixo e não confunda com o material explicado acima.

ls -A -1 -d -F .* | egrep -v '/$'
    
por 21.09.2016 / 15:02
-2
ls -lart | sed -n "/ \.[A-Za-z0-9][A-Za-z0-9]*/p"
    
por 22.05.2017 / 06:51