Como fazer o find trabalhar com curingas (*) quando informamos o diretório onde será realizada a bus

1. Como fazer o find trabalhar com curingas (*) quando informamos o diretório onde será realizada a bus

Mestre Kame
mlgrassi

(usa Debian)

Enviado em 25/07/2016 - 16:09h

Necessito saber se há alguma forma de utilizar o find para o seguinte propósito:

Possuo uma estrutura de diretórios que são homes de usuários contidas em /home os quais são muitos:
/home/usuario1
/home/usuario2
/home/usuarioN...


No entanto há algo em comum com essas homes, onde todas elas contém o subdiretório chamado work, logo:
/home/usuario1/work
/home/usuario2/work
/home/usuarioN/work
...

Necessito buscar todos os arquivos existentes em .../work/... mas SOMENTE aí.
Utilizando o find com uma sintaxe semelhante a find /home/*work* -type f o comando é executado porém não retorna nada. Evidentemente que há algo errado, pois há arquivos nos subdiretórios work. Por isso recorro a vocês caros colegas do VOL para saber como posso proceder para realizar tal busca mas que não seja algo oneroso como por exemplo buscar uma a uma nas homes dos usuários ou utilizar laço de repetição para fazer isso. Pensava em uma linha apenas resolver esse problema, afinal o find é um comando muito robusto.
Há alguma forma?


  


2. Re: Como fazer o find trabalhar com curingas (*) quando informamos o diretório onde será realizada a bus

thinomar
thinomar

(usa Linux Mint)

Enviado em 25/07/2016 - 16:23h

Funcionou aqui...
find /home/*/work* -type f 

--
-I've been talking to the main computer
-And...?
-It hates me


3. Re: Como fazer o find trabalhar com curingas (*) quando informamos o diretório onde será realizada a bus

Carlos A. P. Cunha
Carlos_Cunha

(usa Linux Mint)

Enviado em 25/07/2016 - 16:23h

mlgrassi escreveu:

Necessito saber se há alguma forma de utilizar o find para o seguinte propósito:

Possuo uma estrutura de diretórios que são homes de usuários contidas em /home os quais são muitos:
/home/usuario1
/home/usuario2
/home/usuarioN...


No entanto há algo em comum com essas homes, onde todas elas contém o subdiretório chamado work, logo:
/home/usuario1/work
/home/usuario2/work
/home/usuarioN/work
...

Necessito buscar todos os arquivos existentes em .../work/... mas SOMENTE aí.
Utilizando o find com uma sintaxe semelhante a find /home/*work* -type f o comando é executado porém não retorna nada. Evidentemente que há algo errado, pois há arquivos nos subdiretórios work. Por isso recorro a vocês caros colegas do VOL para saber como posso proceder para realizar tal busca mas que não seja algo oneroso como por exemplo buscar uma a uma nas homes dos usuários ou utilizar laço de repetição para fazer isso. Pensava em uma linha apenas resolver esse problema, afinal o find é um comando muito robusto.
Há alguma forma?


Tente assim:
find /home/usuario*/work -type f

Teste que fiz(para simular o seu cenário) crie dentro o /tmp diretório chamado TES e dentro dele
user1 user2 user3

Dentro todos tem um diretório chamado work e dentro um arquivo

Saída do find:

find /tmp/TES/user*/work -type f
/tmp/TES/user1/work/bla01
/tmp/TES/user2/work/bla02
/tmp/TES/user3/work/bla03





#-------------------------------------------------------------------------------------#

"Linux is cool"


4. Re: Como fazer o find trabalhar com curingas (*) quando informamos o diretório onde será realizada a bus

Mestre Kame
mlgrassi

(usa Debian)

Enviado em 25/07/2016 - 16:50h

Infelizmente não deu certo amigo. No caso tem mais um detalhe, alguns usuários possuem o sub-diretorio work em outro subdiretorio abaixo de /home/usuarioN/sub-diretorio/work




5. Re: Como fazer o find trabalhar com curingas (*) quando informamos o diretório onde será realizada a bus

Carlos A. P. Cunha
Carlos_Cunha

(usa Linux Mint)

Enviado em 25/07/2016 - 16:57h

mlgrassi escreveu:

Infelizmente não deu certo amigo. No caso tem mais um detalhe, alguns usuários possuem o sub-diretorio work em outro subdiretorio abaixo de /home/usuarioN/sub-diretorio/work



Deu certo, mas não pro seu cenario o qual faltou informações :-D

Tente assim, dai sera dois conandos:

1° - Para quem segue ordem /home/usuarioXX/work/
find /tmp/TES/*/work -type f

2° - Para quem segue ordem /home/usuarioXX/OUTRO-DIRETORIO/work
find /tmp/TES/*/*/work -type f


#-------------------------------------------------------------------------------------#

"Linux is cool"


6. Re: Como fazer o find trabalhar com curingas (*) quando informamos o diretório onde será realizada a

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 25/07/2016 - 18:06h

V aí se é isso q vc quer

find ~/ -type d -name work -exec ls {} \; 

___________________________________________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts