Que tal
cd <userfolder>
find . -name <filename> -print
BTW, o nome do arquivo pode conter um padrão e
Assim
find . -name '*MyMissingFile*' -print
Estou usando o servidor linux e um arquivo está faltando e preciso encontrar todos os arquivos correspondentes a um nome MyMissingFile ... como posso emitir um comando que faça uma pesquisa recrusiva de todos os diretórios na pasta do usuário e diga-me onde o arquivo é
Eu não sou um usuário root.
Obrigado
Existem várias maneiras de encontrar um arquivo.
O mais fácil é provavelmente usar o comando locate
. Este comando usa um cache de arquivos conhecidos. Para usá-lo, você precisa ter certeza de que o cache está atualizado, usando updatedb
. No seu caso, você terá que confiar que está atualizado, já que você não é root e não pode atualizar o banco de dados. Para usar locate
, digite:
$ locate MyMissingFile
Se você quiser apenas arquivos chamados exatamente "MyMissingFile", use:
$ locate MyMissingFile | grep "/MyMissingFile$"
Agora, se você sabe em qual diretório seu arquivo está, você pode usar find
. find
não depende de um cache db e digitalizará recursivamente o diretório e imprimirá todos os arquivos que encontrar. Existem várias opções para filtrar os arquivos encontrados (consulte man find
para listá-los), incluindo uma opção -name
para filtrar o nome do arquivo. Use-o como tal:
$ find $yourdirectory -name MyMissingFile
que corresponderá aos arquivos cujos nomes são exatamente "MyMissingFile". Para coincidir com nomes que contenham "MyMissingFile", use:
$ find $yourdirectory -name "*MyMissingFile*"
Observe que locate
é geralmente muito mais rápido que find
, pois tem as respostas em cache, enquanto find
precisa ler todos os arquivos no diretório especificado.
locate -r '/MyMissingFile$'
é mais eficiente que as sugestões usando o grep. Mas nem toda versão do locate aceita -r (embora o locate no GNU findutils tenha).
Tags linux