Localiza arquivos com um nome de arquivo exato com mdfind

2

Existe uma maneira de pedir ao mdfind para procurar nomes de arquivos com um nome de arquivo exato?

Em algum momento em um pipe eu tenho isso:

(filenames are produced here) | while read f; do mdfind -name "$f" | grep -E "/$f";

Eu tenho dois problemas:

  • se o nome do arquivo contiver um + :

    grep: repetition-operator operand invalid

  • se o nome do arquivo contiver um parêntese, o resultado estará vazio.

Como posso corrigir isso?

    
por alecail 22.01.2013 / 12:10

2 respostas

1

Acho que você não precisa de expressões regulares aqui. Apenas tente procurar por uma string fixa com o grep. Você pode ativar a correspondência de cadeia fixa com a opção -F .

Dado que sua linha de comando se parece com

(filenames are produced here) | \
while read f ; \
    do mdfind -name "$f" | grep -F "/$f" ; \
done
    
por 22.01.2013 / 12:43
1

Use o poder da página man. ;)

A página man do mdfind diz:

 -literal    Force the provided query string to be taken as a literal query string, without interpretation.

Sem essa opção, mdfind interpreta caracteres como "*", "+" e "()" como expressão regular.

    
por 22.01.2013 / 12:42

Tags