file (1) terminação de comando ao usar a opção -f -

0

Digamos que eu gostaria de usar o comando file -f - dentro de um script, e enviar alguma entrada usando o stdin, quando terminar, eu gostaria de terminá-lo normalmente, mas infelizmente não encontrei nenhuma maneira para fazer isso (e sim eu li a página do manual :)).

    
por Scis 16.03.2014 / 12:04

2 respostas

4

Você só precisa enviar EOF sinal quando terminar. Para fazer isso, você precisa pressionar CTRL + D :

$ file -f -
test.py
test.py:       a /usr/bin/python script, ASCII text executable
test.pl  
test.pl:       a /usr/bin/perl script, UTF-8 Unicode text executable
<CTRL + D here>

ou você pode enviar para o arquivo dentro do shell script via HERE DOC :

file -f - <<EOF
test.pl
test.py
test.awk
EOF
    
por 16.03.2014 / 12:56
1

Método # 1 - Usando um heredoc

Um documento aqui como @ Gnouc mostra em sua resposta é uma maneira fácil de realizar o que você quer se você tiver uma lista aleatória de arquivos para passar para file .

Método 2 - Usando o find

Se você precisar fazer isso em um diretório de arquivos, use find e chame file para o conjunto inteiro de arquivos nos resultados.

Exemplo
$ find . -exec file {} +
.:       directory
./adir:  directory
./afile: empty

O comando find pode então ser usado para selecionar o conjunto apropriado de arquivos e / ou diretórios por tipo ou por seus nomes 'usando padrões via find .

Método 3 - Usando um loop for

Se for apenas um conjunto de arquivos no diretório atual, um loop for também poderá realizar a tarefa.

Exemplo
$ for i in *;do file $i;done
adir: directory
afile: empty

Novamente, você pode usar expressões regulares para ajudar a filtrar os resultados conforme necessário.

    
por 16.03.2014 / 15:21