passando a variável ls ao grep ao fazer uma busca de arquivo só funciona dentro do diretório

1

Eu estou executando um comando que eu uso para encontrar o arquivo mais recente em uma pasta, em seguida, grep o conteúdo de um padrão correspondente. Aqui está o fluxo de comando que mostra o problema que estou tendo.

root@backup /]# grep -w 'sucessfully completed.' "$(ls -1rt /var/log/folder | tail -n1)"
/bin/grep: <file_name>: No such file or directory
[root@backup /]# cd /var/log/folder/
[root@backup file_folder]# grep -w 'sucessfully completed.' "$(ls -1rt /var/log/folder | tail -n1)"
sucessfully completed.

No primeiro comando, ele encontra o arquivo, mas não diz nenhum arquivo ou diretório. Esquisito. Então, como você pode ver, eu cd'd dentro da pasta real correu o mesmo comando e funcionou. Minha variável tem o caminho absoluto, então o que está acontecendo aqui? Eu verifiquei quaisquer aliases do grep que poderiam estar interferindo e não encontrei nenhum. Se eu executar os comandos separadamente fora de usar uma variável, ela funciona e funciona fora da pasta de arquivos. (como eu esperaria)

[root@backup /]# grep -w 'sucessfully completed' /var/log/folder/file
sucessfully completed.
    
por user53029 13.05.2016 / 15:41

1 resposta

3

nome-do-arquivo do arquivo está faltando na primeira parte, tente

grep -w 'sucessfully completed.' "/var/log/folder/$(ls -1rt /var/log/folder | tail -n1)"

não tente ... unles não há diretório em / var / log / folder /

grep -w 'sucessfully completed.' "$(ls -1rt /var/log/folder/* | tail -n1)"
    
por 13.05.2016 / 15:47