Grep caminho inteiro

3

Oi, eu gostaria de fazer isso

ls * | grep pattern

Mas eu gostaria que, em vez de apenas mostrar ao arquivo com o padrão, todo o caminho dos arquivos que correspondem aos padrões

    
por biorunner88 22.12.2015 / 15:03

1 resposta

2

Uma maneira seria usar find para fazer a correspondência, embora talvez seja necessário alterar o padrão para corresponder à sintaxe find em vez de grep s, pois acho que eles não são idênticos.

find "$PWD" -maxdepth 1 -regex 'pattern'

deve mostrar o caminho completo e o -maxdepth impedirá que ele entre nos subdiretórios. Se você quiser apenas usar globs em vez de regex, use a sintaxe -name 'glob' e use o * como faria com ls .

Aqui está um exemplo de saída:

$ find "$PWD" -maxdepth 1 -regex '.*sh$'
/home/erenouf/tmp/scratch/t.sh
/home/erenouf/tmp/scratch/parseIW.sh
/home/erenouf/tmp/scratch/output.sh

desde que eu estava em ~/tmp/scratch no momento e procurei por arquivos que terminaram em sh

Nesse caso, posso obter a mesma saída com

find "$PWD" -maxdepth 1 -name '*sh'

Para fazer com que pareça em subdiretórios, você pode apenas remover a parte -maxdepth 1 de cada comando

    
por 22.12.2015 / 15:13

Tags