Estes não fazem parte do bash; find
é um programa independente e não requer o bash ou até mesmo um shell POSIX para ser executado. Por exemplo, funciona bem com fish
, que não é compatível com POSIX e não segue todas as mesmas regras de sintaxe do bash. Você poderia, de fato, usá-lo sem shell (por exemplo, em um contexto programático).
É por isso que (se você estiver usando um shell POSIX, ou um que tenha regras similares nessa instância), você deseja usar aspas com determinados argumentos para find
, como find . -name '*foo'
. A string entre aspas simples é passada sem executar nenhuma substituição ou expansão. O shell não faz nada com isso. Se você usar find . name *foo
com o bash e houver arquivos correspondentes a esse glob no seu diretório atual, o que você pretendia que acontecesse provavelmente não aconteceria.
Se você usar um shell com regras diferentes, terá que levar isso em conta ao usar find
. Por exemplo, você realmente não precisa citar o {}
com bash
, mas se você fizer a mesma coisa com fish
, receberá find: missing argument to '-exec'
.
As chaves encaracoladas têm um significado no bash - elas são usadas na substituição / expansão de parâmetros e em comandos de grupo. Eles têm uma espécie de propósito semelhante em find
, mas é find
que os analisa, não bash
.