Na página de findutils
find
manual :
Se nenhuma expressão for fornecida, a expressão -print
será usada (mas você provavelmente deve considerar o uso -print0
).
( -print
é uma find
expressão.)
A documentação do POSIX confirma isso:
Se nenhuma expressão estiver presente, -print deve ser usada como expressão.
Então, find .
é exatamente equivalente a find . -print
; o primeiro não tem expressão, portanto -print
é adicionado internamente.
A explicação do que -print
acontece se encontra mais abaixo na página de manual:
-print
Verdade; imprima o nome completo do arquivo na saída padrão, seguido por uma nova linha. Se você estiver canalizando a saída do find para outro programa e houver a menor possibilidade de que os arquivos que você está procurando possam conter uma nova linha, considere seriamente usar a -print0
opção em vez de -print
. Consulte a seção UNUSUAL FILENAMES para obter informações sobre como os caracteres incomuns nos nomes de arquivos são tratados.
-print
é a ação padrão . Algunsfind
predicados são considerados ações em oposição a filtros ou condições . Por exemplo,-type f
não é uma ação.-exec
é uma ação, embora também possa ser usada como uma condição.As ações incluem
-print
,-exec
e-ok
. Algumasfind
implementações ter outros predicados de ação não-padrão como o-print0
,-printf
,-execdir
,-okdir
,-ls
...Onde nenhuma das ações
<some-predicates>
contidas é equivalente a:(observe os parênteses acima, que são importantes se houver alguns
-o
operadores).Em caso de dúvida, o melhor é usar
-print
explicitamente (ou-exec printf '%s\0' {} +
(ou-print0
quando disponível) para que a saída possa ser pós-processada).A
-print
ação padrão é especificada pelo POSIX. Algumasfind
implementações antigas exigiam um explícito-print
, mas elas geralmente não são encontradas na natureza atualmente.Observe também que algumas
find
implementações permitem omitir ofiles
, nesse caso, elas padronizam a pesquisa no diretório atual. Ou seja, para eles,é equivalente a
No entanto, isso não é padrão, por isso é melhor evitar.
No final mais detalhado (e útil) do espectro, algumas
find
implementações também permitem a passagem de caminhos de arquivos como argumento para uma-f
opção como em:Eles são as únicas
find
implementações que permitem a passagem de caminhos de arquivos arbitrários parafind
. Outras implementações não podem aceitar caminhos de arquivo como!
ou-print
... entãofind "$file" -print
(ou mesmofind -- "$file" -print
) assume que$file
não é o nome de umfind
predicado (ou opção no primeiro caso).Infelizmente, isso também não é padrão nem portátil.
fonte
Eles são os mesmos, ambos escrevem toda a hierarquia de diretórios no diretório atual.
No POSIX, encontre a documentação :
fonte
No Linux, não há diferença, mas outros sistemas (como o AIX, por exemplo) precisam
-print
se você deseja que a saída do comando seja exibida na tela.fonte
find
não precisa dele. O AIX está em conformidade com o POSIX há décadas.Por muitos anos, o comando find não teve uma ação padrão. Um erro comum foi esquecer de adicionar a opção -print ao seu comando find. Eu ainda hoje escrevo isso por hábito.
Mas, em algum momento, ele foi adicionado como a ação padrão
find .
e agorafind . -print
é equivalente.fonte
Às vezes, é útil usar
-print
explicitamente quando você está executando outra ação, para que o nome do arquivo seja exibido conforme a ação é executada.seria semelhante a
onde
-print
corresponde-v
. Se você não incluir-print
, os nomes dos arquivos não serão exibidos.A fim de tornar o
rm
comando ainda mais semelhante, a propósito, emita este comando Bash primeiroo que tornará os
*
arquivos de ponto (ocultos) correspondentes.fonte