ls > /tmp/filelist
echo "* * * File List * * *"
cat /tmp/filelist
assume que você não está listando os arquivos em /tmp
. Se esse for o caso, altere o /tmp
para /var/tmp
Eu preciso usar o ls > filelist
e, no entanto, quando é usar "cat filelist"
, ele exibe todo o conteúdo no filelist
com filelist
como um dos nomes nele, mas preciso alterá-lo "* * * File List * * *"
. Não tenho certeza de como fazer isso apenas na lista de arquivos filelist
, se isso fizer sentido.
ls > /tmp/filelist
echo "* * * File List * * *"
cat /tmp/filelist
assume que você não está listando os arquivos em /tmp
. Se esse for o caso, altere o /tmp
para /var/tmp
Você pode fazer:
ls | grep -vx filelist > filelist
A opção -v
faz com que ela exclua as linhas correspondentes da saída, e -x
faz com que ela corresponda à linha inteira (para não pular otherfilelist
).
Os comandos Unix são bastante concisos e não decoram sua saída com cabeçalhos / rodapés ou detalhes irrelevantes, precisamente para facilitar seu uso em pipelines aleatórios. Adicioná-lo é bem fácil:
(echo '* * * This is a header * * *'; ls ; echo --* footer *--) > filelist
Apenas para um entendimento mais profundo: você pode facilmente dividir o comando inteiro em três partes:
echo " Lista de arquivos "; echo imprime (se você não tem pipe a saída em outro lugar) em STDIN (entrada padrão)
ls | grep -vx filelist; lista o conteúdo do seu diretório atual e canaliza a saída para o grep. Normalmente, "grep" apenas imprime linhas que contenham a palavra-chave dada ("filelist") no nosso caso. Com a opção -v, procuramos por linhas que NÃO contenham a palavra-chave. Como mencionado por Barmar, também excluiria arquivos que contenham "filelist" como, e. "myfilelist", "filelist2", ..., então o uso do -x é recomendado.
filelist redirects the output to the file "filelist". As (1) and (2) are in brackets and seperated by semicolons, the output (which would have been printed out on STDIN) of both commands will be redirected to this file.
Tags ls