AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 468901
Accepted
nux
nux
Asked: 2014-05-19 16:10:40 +0800 CST2014-05-19 16:10:40 +0800 CST 2014-05-19 16:10:40 +0800 CST

Como mostrar apenas arquivos ocultos no Terminal?

  • 772

Eu tenho um diretório que contém milhares de arquivos, alguns deles estão ocultos.

O comando ls -alista todos os arquivos, incluindo os ocultos, mas preciso apenas listar os arquivos ocultos.

Qual comando devo usar?

command-line
  • 23 23 respostas
  • 796384 Views

23 respostas

  • Voted
  1. Best Answer
    nux
    2014-05-19T16:10:40+08:002014-05-19T16:10:40+08:00

    O comando :

    ls -ld .?* 
    

    Apenas listará arquivos ocultos.

    Explique :

     -l     use a long listing format
    
     -d, --directory
                  list  directory entries instead of contents, and do not derefer‐
                  ence symbolic links
    
    .?* will only state hidden files 
    
    • 282
  2. patrick
    2014-05-19T20:52:58+08:002014-05-19T20:52:58+08:00
    ls -d .!(|.)
    

    Faz exatamente o que o OP está procurando.

    • 43
  3. terdon
    2014-05-19T18:57:47+08:002014-05-19T18:57:47+08:00

    Se você quer apenas os arquivos em seu diretório atual (sem recursão), você pode fazer

    echo .[^.]*
    

    Isso imprimirá os nomes de todos os arquivos cujo nome começa com a .e é seguido por um ou mais caracteres sem ponto. Observe que isso falhará para arquivos cujo nome comece com pontos consecutivos, portanto, por exemplo ....foo, não será mostrado.

    Você também pode usar find:

    find -mindepth 1 -prune -name '.*'
    

    As -mindepthgarantias de que não correspondemos .e os -prunemeios que findnão descerão aos subdiretórios.

    • 21
  4. Mark
    2014-05-19T20:55:55+08:002014-05-19T20:55:55+08:00
    ls -ad .*
    

    funciona para mim em Bash.

    • 21
  5. Avinash Raj
    2014-05-19T18:46:01+08:002014-05-19T18:46:01+08:00

    Usando finde awk,

    find . -type f | awk -F"/" '$NF ~ /^\..*$/ {print $NF}'
    

    Explicação:

    find . -type f--> Liste todos os arquivos no diretório atual junto com seu caminho como,

    ./foo.html
    ./bar.html
    ./.foo1
    

    awk -F"/" '$NF ~ /^\..*$/ {print $NF}'

    /como separador de campo awk verifica o último campo com um ponto ou não. Se começar com um ponto, imprime o último campo dessa linha correspondente.

    • 4
  6. Mark H
    2014-05-20T13:24:39+08:002014-05-20T13:24:39+08:00

    findgeralmente é uma opção melhor para pesquisas complicadas do que usar globbing de nomes.

    find . -mindepth 1 -maxdepth 1 -name '.*'
    

    ou

    find . -mindepth 1 -maxdepth 1 -name '.*' -o -name '*~'
    

    find .pesquisa o diretório atual

    -mindepth 1exclui. e .. da lista

    -maxdepth 1limita a pesquisa ao diretório atual

    -name '.*'encontrar nomes de arquivos que começam com um ponto

    -oou

    -name '*~'encontre nomes de arquivos que terminem com um til (geralmente, são arquivos de backup de programas de edição de texto)

    No entanto, esta e todas as outras respostas perdem arquivos que estão no arquivo do diretório atual .hidden. Se você estiver escrevendo um script, essas linhas lerão o .hiddenarquivo e exibirão os nomes dos arquivos existentes.

    if [[ -f .hidden]] # if '.hidden' exists and is a file
    then
        while read filename # read file name from line
        do
            if [[ -e "$filename" ]] # if the read file name exists
            then
                echo "$filename" # print it
            fi
        done < .hidden # read from .hidden file
    fi
    
    • 4
  7. xiaodongjie
    2014-05-19T18:00:51+08:002014-05-19T18:00:51+08:00

    Eu acho que você pode fazer isso com o seguinte comando.

    ls -a | grep "^\." | grep -v "^\.$" | grep -v "^\..$"
    

    ls -acomando que você digitou, que mostra todos os arquivos e diretórios no diretório de trabalho atual.

    grep "^\."comando que acrescentei, que filtra a saída para mostrar apenas arquivos ocultos (o nome começa com ".").

    grep -v "^\.$" | grep -v "^\..$"comando que acrescentei, que filtra a saída para excluir ., .. (Eles são o diretório atual e pai).

    Se alguns nomes de arquivo podem ter mais de uma linha com "\n", o exemplo acima pode estar incorreto.

    Então, sugiro seguir o comando para resolvê-lo.

    find -maxdepth 1 -name ".[!.]*"
    
    • 2
  8. Lu Tran
    2020-05-04T11:16:42+08:002020-05-04T11:16:42+08:00

    Abordagem 1:ls -d .{[!.],.?}*

    Explique: eu quero excluir .e .., mas incluir arquivos como..i_am_also_a_hidden_file.txt

    1. ls -d .*indesejavelmente mostra .e..
    2. ls -d .?*(a resposta aceita atual) mostra indesejavelmente..
    3. ls -d .[!.]*indesejavelmente não vai mostrar..i_am_also_a_hidden_file.txt
    4. ls -d .{[!.],.?}*é a resposta

    Abordagem 2:ls -A | grep "\\."

    Eu pessoalmente gosto mais assim

    • 2
  9. amrx
    2015-03-19T21:47:51+08:002015-03-19T21:47:51+08:00

    O que mais você poderia ter feito, is ls .?*Ou ls .!(|)isso mostrará tudo no diretório atual, arquivos / diretórios ocultos na parte superior e outros arquivos / diretórios abaixo

    ex: do meu terminal

    $ ls .?*       
    .bash_history    .dmrc        .macromedia   .weather
    .bash_logout     .gksu.lock   .profile      .wgetrc
    .bash_profile    .bashrc.save .ICEauthority .toprc           .Xauthority
    .bashrc          .lastdir     .viminfo      .xsession-errors
    .bashrc~         .dircolors   .lynxrc       .vimrc           .xsession-errors.old
    
    ..:
    Baron
    
    .adobe:
    Flash_Player
    
    .aptitude:
    cache  config
    
    .cache:
    compizconfig-1                              rhythmbox
    dconf                                       shotwell
    

    Agora observe nos resultados acima, ele mostra todos os arquivos/diretórios com seu subdiretório e todos os arquivos ocultos logo abaixo.

    [1:0:248][ebaron@37signals:pts/4][~/Desktop]
    $ ls .!(|)
    .bash_aliases  .bashrc1  .bashrc1~
    
    ..:
    askapache-bash-profile.txt  examples.desktop             Public           top-1m.csv
    backups             Firefox_wallpaper.png        PycharmProjects          top-1m.csv.zip
    Desktop             java_error_in_PYCHARM_17581.log  Shotwell Import Log.txt  topsites.txt
    Documents           Music                Templates            Videos
    Downloads           Pictures                 texput.log           vmware
    

    Desculpe, não posso comentar. para explicar a diferença aqui entre ls .?*e @ cioby23 resposta ls -d .[!.]* .??*E por que está realmente imprimindo arquivos ocultos duas vezes é porque literalmente você está perguntando duas vezes .??*, .?*, .[!.]*eles são a mesma coisa, então adicionar qualquer um deles com caracteres de comando diferentes imprimirá duas vezes.

    • 2
  10. muru
    2018-09-26T18:36:22+08:002018-09-26T18:36:22+08:00

    Com o bash, definir a GLOBIGNOREvariável especial como um valor não vazio é suficiente para fazê-lo ignorar .e ..ao expandir globs. Dos documentos do Bash :

    A GLOBIGNOREvariável shell pode ser usada para restringir o conjunto de nomes de arquivos que correspondem a um padrão. Se GLOBIGNOREestiver definido, cada nome de arquivo correspondente que também corresponder a um dos padrões em GLOBIGNOREserá removido da lista de correspondências. Se a nocaseglobopção estiver definida, a correspondência com os padrões em GLOBIGNOREserá executada sem considerar maiúsculas e minúsculas. Os nomes dos arquivos .e ..são sempre ignorados quando GLOBIGNOREsão definidos e não são nulos. No entanto, definir GLOBIGNOREum valor não nulo tem o efeito de habilitar a opção dotglob shell, para que todos os outros nomes de arquivo que comecem com ‘.' correspondam.

    Se definirmos como .:.., ambos .e ..serão ignorados. Como configurá-lo para qualquer coisa não nula também obterá esse comportamento, também podemos configurá-lo para apenas.

    Então:

    GLOBIGNORE=.
    ls -d .*
    
    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve