Questão Usando apenas 1 linha de comando, como eu escrevo um comando para isso irá fazer uma longa lista de todos os arquivos no diretório de armazenamento / arquivo


Usando apenas 1 linha de comando, como eu escrevo um comando para isso irá fazer uma longa lista de todos os arquivos no diretório armazenamento / arquivo e canalizar a saída para um comando grep que encontre todos os itens contendo a palavra pizza?

Seria isso ?:

ls -l /storage/file | grep pizza

0


origem


echo storage/file/*pizza*? - twalberg
Pretende procurar nomes de ficheiros que contenham a palavra "pizza", ficheiros que contenham a palavra "pizza" no conteúdo do ficheiro ou linhas do tipo "pizza". ls saída que contém a palavra "pizza" (que poderia incluir usuário ou grupos, ou os nomes dos arquivos)? Aqui está uma dica rápida: o que você fizer, o comando precisará ter a palavra "pizza" em algum lugar, o que sua tentativa atual não faz. - Brian Campbell
Eu sei que você pediu grep mas você considerou usar find procurar a palavra pizza? find /storage/file -name pizza


Respostas:


Aqui está:

grep -l pizza /storage/file/*

Isso imprimirá os nomes de todos os arquivos /storage/file/ que contêm a palavra pizza.

Se você quiser a longa lista desses arquivos, você pode fazer qualquer um destes:

ls -l $(grep -l pizza /storage/file/*)
grep -l pizza /storage/file/* | xargs ls -l

3



grep tem dois modos de operação: procura um padrão nos arquivos listados na linha de comando OU se nenhum arquivo estiver listado, ele pesquisará na entrada padrão, que pode vir de um pipe. Então, método 1: grep pattern file1 file2 ou método 2: some_cmd | grep pattern. A maneira correta depende do que você quer fazer. - janos
Você só precisa citar quando o padrão contém caracteres que significam algo no shell. Para "pizza" grep pizza está bem, mas para "uma pizza" você teria que escrever grep 'a pizza'. - janos


Sempre tem seu amigo find comando.

find /storage/file -name '*pizza*' -exec ls -l {} \;

Observe as aspas simples ao redor do nome para evitar que o shell expanda o glob muito em breve. Este formulário tem o bônus sendo facilmente adaptado para também procurar nos arquivos mencionados:

find /storage/file -name '*pizza*' -exec grep cheese {} \;

Isso localiza todos os arquivos nomeados com pizza no nome do arquivo e mostra todos os locais que eles mencionam.

Ou você quis dizer apenas encontrar todos os arquivos falando sobre pizza em um diretório e depois listá-los?

ls -l $(grep -l pizza /storage/file/*)

0