Listar diretórios contendo arquivos que correspondem a uma expressão regular

5

Eu gostaria de criar um sistema de filtragem simples no meu servidor FreeBSD que me permita criar "views" arbitrárias de diretórios.

Por exemplo, eu gostaria de poder listar todos os diretórios que correspondem ao padrão "* .mp3", mas exibir apenas o nome do diretório.

Por exemplo, se eu rodasse o comando na minha pasta de músicas, eu gostaria de poder mostrar todos os diretórios que possuam mp3s neles em um comando, e todos os diretórios que possuem arquivos flac neles como um comando separado.

O comando find . -name "*.mp3" quase faz o que eu quero, mas exibe uma entrada para cada arquivo. Existe uma maneira de limitar a busca a um resultado por diretório?

    
por javanix 10.11.2011 / 18:28

2 respostas

3

Use este script:

find / -name "*.mp3" | grep -o '.*/' | sort | uniq > mp3files
    
por 10.11.2011 / 18:45
4

Comos sobre:

encontre. -name '* .mp3' -print0 | xargs -0 -i dirname {} | uniq

Eu recebo algo como:

./ mnt / mp3 / Adicts / Coleção Complete Singles (1995)

./ mnt / mp3 / Adicts / Rise e Shine (2002)

. / mnt / mp3 / Adicts / Songs of Praise (1981)

./ mnt / mp3 / Adicts / Twenty-seven (1992)

./ mnt / mp3 / Adicts / Addiction final

./ mnt / mp3 / Adicts / Muito Melhor De Adicts (1998)

    
por 10.11.2011 / 21:02