Deve-se analisar a saída ls -Al e obter o nome do arquivo ou diretório [duplicado]

0

Eu preciso analisar ls -Al output e obter o nome do arquivo ou diretório

ls -Al output:

drwxr-xr-x  12 s162103  studs         12 march 28 2012 personal domain
drwxr-xr-x   2 s162103  studs          3 march 28 22:32 public_html
drwxr-xr-x   7 s162103  studs          8 march 28 13:59 WebApplication1

Eu deveria usar apenas ls -Al | <something>

por exemplo:

ls -Al | awk '{print $8}'

mas isso não funciona porque $8 não é nome se houver espaços no nome do diretório, é uma parte do nome. talvez haja alguns utilitários que cortam o sobrenome ou excluem qualquer coisa antes?

    
por Alex Zern 30.03.2013 / 19:20

1 resposta

6

Você nunca deve tentar analisar ls para uma lista de nomes de arquivos. O bash wiki tem um artigo inteiro sobre por que você não deve analisar a saída de ls . Ter arquivos com espaços é um dos maiores motivos.

Você deseja usar um glob :

printf '%s\n' *

Sua pergunta apenas indica que você deseja imprimir o nome do arquivo, mas suspeito que você também queira executar uma ação. Nesse caso, você deseja iterar sobre o glob:

for f in *; do
    somecommand "$f"
done
    
por 30.03.2013 / 19:25

Tags