Meu objetivo é encontrar todos os arquivos pdf em uma máquina remota, por isso recorro ao comando útil find
. Então eu digito
find ~ * .pdfou
encontre ~ "* .pdf"e não recebo nada. Faço o mesmo na minha máquina e não recebo nada. Faço uma pesquisa regular no menu da minha máquina e encontro alguns arquivos pdf. Alguém poderia me dizer o que estou fazendo de errado?
find
está longe de ser inútil.find
é intuitivo. Eu provavelmente poderia dizer a mesma coisa em um tom mais agradável; às vezes reajo a comentários tolos (negativos).Respostas:
find
está longe de ser inútil. Você não está usando corretamente.experimentar:
find . -type f -iname '*.pdf'
fonte
Dê uma olhada na documentação para os findutils . O
find
comando é incrivelmente poderoso e, consequentemente, possui uma interface um tanto complicada. Você pode fazer o que quiser com:O comando acima significa "localizar dentro. Para entradas do arquivo de tipo com um nome que não diferencia maiúsculas de minúsculas que corresponde a * .pdf (e imprime o nome de tais correspondências)". O comando find pode realmente ser usado para executar comandos nos arquivos encontrados (em vez de ou além de imprimir os nomes dos arquivos). Porém, para seus propósitos, você pode se sentir mais à vontade com o comando localizar , que - supondo que você construiu o banco de dados de localização usando o updatedb - facilita a localização de arquivos. Por exemplo:
Você também descobrirá que o comando find é geralmente mais rápido que o comando find, pois o find usa um índice de nomes de arquivos (o banco de dados de localização), enquanto o find percorre a hierarquia de cada chamada.
fonte
Você está simplesmente perdendo o predicado que diz o que está pesquisando (por exemplo
-name
).Para localizar no diretório inicial por nome:
Observe que o curinga
*
precisa ser escapado para que o shell não o interprete antes que o find coloque as mãos nele. Usar'*.pdf'
e"*.pdf"
terá o mesmo efeito que\*.pdf
.Para localizar sem distinção entre maiúsculas e minúsculas:
Para remover os resultados apenas em arquivos (a expressão do nome provavelmente cuidará disso para você, mas apenas no caso de você ter diretórios com nomes estranhos):
Para garantir que encontre os links simbólicos a seguir (geralmente, eu mesmo quero fazer isso ao fazer pesquisas):
Para fazer algo com os arquivos que você encontrou: você pode despejar isso em um arquivo usando o redirecionamento stdout (por exemplo, aderir no
> filename
final) ou usar a-exec
opção para executar um comando (consulte a página de manual para obter detalhes). Porém, este último executa um comando em cada arquivo por vez. geralmente é mais rápido permitir que oxargs
comando passe seus arquivos encontrados como argumentos para outro comando, todos de uma vez ou grandes blocos de cada vez. Por exemplo, para grep ad-hoc (mas não indexado) nos arquivos de cabeçalho:E uma extensão final, para que esse último comando funcione corretamente se você tiver arquivos e diretórios com espaços:
fonte
dê uma olhada neste tutorial
eu acho que o que você quer fazer é
fonte
iname
atributo para uma melhor visão corredorEu costumava combinar o achado com o grep como
encontrar . . | grep -i ".pdf"
talvez não seja altamente eficiente, mas faz o trabalho bem.
fonte
find
diretamente se você desejou, via-iregex
:find ~ -iregex '.*\.pdf'
. O problema é que, nofind
padrão, é tratado como se sempre houvesse um^
na frente e outro$
na parte de trás; portanto, seu padrão precisa ser um pouco mais complicado. Observe também: que.
no seu padrão é realmente um curinga de um caractere, não um período literal.Encontre os arquivos que você precisa baixar nos últimos x dias
você encontrará arquivos pdf em seu
~
diretório pessoal e abaixo, com extensão,.pdf
independentemente das letras maiúsculas e minúsculas (que são i ininame
) e modificados até 1 dia atrás porque eu adicioneimtime -1
; se você colocar -60 em mtime, serão os últimos 60 dias.fonte
Para executar uma pesquisa nos arquivos "encontrados", existe esta construção:
O comando exec deve terminar com o ";" escapado e o -H é necessário para o grep imprimir o caminho do arquivo, além da linha dentro do arquivo em que "string" está.
fonte