linux equivalente a dir / b / s / a: -D (imprime o caminho completo de todos os arquivos recursivamente)

2

eu apenas hoje migrei para o linux e gostaria de saber como fazer isso com o comando ls (o que você acha melhor). A idéia é obter todos os arquivos com caminho completo em um diretório, incluindo subdiretórios ... O comando cmd que eu estava usando é:

dir /b /s /a:-D
    
por kurokirasama 29.06.2018 / 04:17

1 resposta

5

Até onde eu sei, o comando dir desce para subdiretórios ( /S ), pulando cabeçalhos e resumos ( /B ) e omitindo arquivos cuja d irectoria a ttribute está definido ( /A:-D )

A maneira portátil de fazer isso no Linux seria através do comando find - ele desce em subdiretórios por padrão, e pode-se omitir diretórios adicionando -not -type d ( ! pode ser usado como sinônimo de -not )

Por padrão, ele relata caminhos relativos ao ponto de partida, portanto, para obter caminhos absolutos, você pode usar a variável de diretório de trabalho atual do shell PWD :

find "$PWD" -not -type d

Se você estiver usando um shell que suporta correspondências de padrões recursivos (também conhecidos como "globstar") e qualifiers glob, existem outras opções - em zsh , por exemplo, você poderia fazer

ls -1d **/*(^D:A)

ou simplesmente

printf '%s\n' **/*(^D:A)

Você também pode querer considerar se realmente deseja "não diretórios" ou "arquivos simples":

find "$PWD" -type f

ou (zsh)

printf '%s\n' **/*(.:A)
    
por 29.06.2018 / 05:10