Nome do arquivo que começa com - (traço) [duplicado]

6

Eu tenho um arquivo chamado -l no meu diretório

agora eu tentei fazer

for i in *; do stat -c "%s %n" "$i"; done

lista todos os arquivos com tamanhos, mas no meio da saída há algo como

395 koko.pub
stat: invalid option -- 'l'
Try 'stat --help' for more information.
2995974 list.txt

para que não seja possível processar -l como nome de arquivo normal, como obter o comportamento desejado de stat ?

    
por lllook 17.12.2015 / 12:01

3 respostas

19

Use ./ antes do nome do arquivo:

for i in *; do stat -c "%s %n" "./$i"; done

Ou use -- para indicar o final das opções para stat :

for i in *; do stat -c "%s %n" -- "$i"; done

Embora esse ainda falhe em um arquivo chamado - (relata as informações do arquivo aberto no stdin em vez do arquivo - no diretório atual).

    
por 17.12.2015 / 12:04
7

Adicione -- para marcar o final das opções para stat :

for i in *; do stat -c "%s %n" -- "$i"; done
    
por 17.12.2015 / 12:03
-2

Ainda mais simples, renomeie o arquivo para -_I ou simplesmente sem o traço. Simplesmente por uma questão de curiosidade purista POR QUE você colocou um traço na frente do arquivo no primeiro pplac?

    
por 18.12.2015 / 00:08