localize diretórios contendo vários arquivos compartilhando o mesmo nome base

0

Como eu modificaria a seguinte instrução bash para obter somente os diretórios que correspondem exatamente a genre_ (basename) e outro genre_* . Como próximo passo, eu acrescentei | wc -l ao segundo find , mas eu obtive para cada linha o mesmo número muito alto, o que me diz que é uma contagem entre diretórios (por quê?)

$ find . -name 'genre_' -exec dirname {} \; | while EFS= read -r thedir; do echo "$(find . -name 'genre_*')"; done
./The-Specials/genre_
./The-Specials/genre_rock
./ACDC/genre_Hard-Rock
./We-3/genre_
./We-3/genre_Jazz

Na saída acima, somente o ACDC deve ser filtrado.

    
por Erwann 16.06.2018 / 01:44

1 resposta

0

Admito que não entendo o que seu código deve fazer (leia: a questão não está clara nesse assunto). No entanto, posso responder isso:

As the next step, I appended | wc -l to the second find, but I get for each line the same very high number, which tells me it's a count across directories (why?)

Você read -r thedir mas thedir nunca é usado. O segundo find é o mesmo comando toda vez, iniciando em . , daí o mesmo número.

Bônus: não vejo o ponto de echo "$(find …)" . Esse código cheira mal. Provavelmente deve ser apenas find … .

    
por 16.06.2018 / 04:04

Tags