Um problema com o find e o grep

1

Eu defini o seguinte alias em ~/.bashrc :

 alias fg='find . -name $1 | xargs grep --color $2'

para escrever

fg "*.txt" " my_text "

e encontre todos os arquivos que tenham extensão .txt e contenham "my_text", mas isso não funciona. Por quê?

    
por Narek 18.03.2011 / 10:36

3 respostas

0

Isso funciona!

function fndg()
{
   find . -name "$1" | xargs grep -rn --color "$2"
}
    
por 18.03.2011 / 12:55
7

Aliases no bash não aceitam parâmetros (como já foi apontado), então quando você precisar de algo parecido, você pode usar funções bash (como a fornecida por @ l0b0).

Mas o que você está tentando alcançar aqui, pode ser feito de uma maneira melhor usando apenas o grep.

grep -r --color --include="*.txt" " my_text " ./

BTW, fg é um shell construído em comando, um importante. Você deve evitar usá-lo como um nome para aliases ou funções.

EDIT: em uma função

$ ffg() { rgrep --color --include="$1" "$2" ./; }
$ ffg "*.txt" " my_text "
    
por 18.03.2011 / 10:58
3

find ./ -name "$1" -exec grep -l "$2" {} \; deve fazer o truque.

    
por 18.03.2011 / 10:58