É bem comum precisarmos buscar por nomes de arquivos ou pastas, ou até mesmo o conteúdo de arquivos no linux pela linha de comando.
As duas ferramentas mais básicas e poderosas pra essas tarefas são o find
e o grep
, juntamente com o processo de pipelining
da shell do linux. Segue alguns exemplos:
A partir da pasta de backups dos clientes, queremos os que foram gerados ontem:
find /media/WORK/backups -type f -name '2012-06-11.backup'
O find
espera o caminho como primeiro parâmetro, e uma lista de opções logo em seguida:\
-type f
->diz que buscamos apenas por símbolos do tipo "arquivo"\
-name '*2012-06-11*.backup'
->diz a wildcard do nome do símbolo que buscamos, nesse caso que contenha '2012-06-11' e que termine com '.backup'. Atenção: NÃO É UMA EXPRESSÃO REGULAR! Mais em
WildCard
Show archive.org snapshot
\
Se quisermos agora pegar o tamanho e detalhes desses arquivos de backup, podemos fazer pipelining
com o comando ls
:
find /media/WORK/backups -type f -name '2012-06-11.backup' | xargs ls -lah
A construct comando1 | comando2
faz com que o output do comando1
seja usado para alimentar o input do comando2
, sendo interpretado na forma de lista no caso de multiline output de comando1
. Como o ls -lah
não lê por padrão do input, mas sim de um caminho, é preciso usar o xargs
para converter input simples em argumentos, de forma que um ls -lah
será executado para cada linha de output do find
.