Terminal: lista subdiretórios contendo um nome de diretório específico

0

Estou tentando escrever um comando que listará todos os diretórios em /usr/share/icons que contêm uma pasta chamada "places", mas somente no primeiro subdiretório.

Para tornar as coisas mais claras, há muitos temas de ícones que serão os seguintes:

/usr/share/icons/theme/places

Existem também muitos diretórios que são apenas para ícones universais e são os seguintes:

/usr/share/icons/theme2/32x32/places

Eu só quero listar os diretórios do primeiro cenário.

UPDATE: Quando eu digo que preciso listar os diretórios em / usr / share / icons, quero dizer que eu preciso que a saída contenha apenas os nomes das pastas. Significado, acho que o awk ou sed será necessário. Obrigado novamente.

    
por ovine 28.12.2015 / 10:35

1 resposta

3

Editar

É suficiente usar a glob star de bash . Isso corresponderá a todos os diretórios dentro de /usr/share/icons/ que também têm o subdiretório places dentro deles.

$ ls -d /usr/share/icons/*/places                                  
/usr/share/icons/breeze-dark/places/
/usr/share/icons/breeze/places/
/usr/share/icons/Deepin-2013/places/
/usr/share/icons/Deepin-icons/places/
/usr/share/icons/Deepin/places/
/usr/share/icons/Deepin-sapphire/places/
/usr/share/icons/Faenza-Dark/places/

Resposta original

O comando find normalmente faz o que é necessário quando se trata de procurar por arquivos ou diretórios. O comando abaixo irá recursivamente descer em todos os diretórios em /usr/share/icons e listar todos os diretórios que possuem places em seu nome.

find /usr/share/icons -type d -iname "*places*"  

Exemplo de saída

$ find /usr/share/icons -type d -iname "*places*" | head -n 5                  
/usr/share/icons/Numix-Light/scalable/places
/usr/share/icons/Humanity/places
/usr/share/icons/ubuntu-mono-light/places
/usr/share/icons/Deepin-2013/places
/usr/share/icons/Human/48x48/places

EDITAR

-printf "%h\n" permite encontrar o caminho do diretório sob o qual um nome de arquivo foi encontrado; awk com o separador de campo / permite imprimir o último item ( $NF ).

================
xieerqi:
$ find /usr/share/icons -maxdepth 2 -type d -iname "*places*"  -printf "%h\n"  
/usr/share/icons/Humanity
/usr/share/icons/ubuntu-mono-light
/usr/share/icons/Deepin-2013
/usr/share/icons/Faenza-Dark
/usr/share/icons/ubuntu-mono-dark
/usr/share/icons/Deepin-icons
/usr/share/icons/Deepin-sapphire
/usr/share/icons/Deepin
/usr/share/icons/Humanity-Dark
/usr/share/icons/Faenza
/usr/share/icons/ubuntukylin-icon-theme
/usr/share/icons/unity-icon-theme

================
xieerqi:
$ find /usr/share/icons -maxdepth 2 -type d -iname "*places*"  -printf "%h\n" | awk -F '/' '{print $NF}'                         
Humanity
ubuntu-mono-light
Deepin-2013
Faenza-Dark
ubuntu-mono-dark
Deepin-icons
Deepin-sapphire
Deepin
Humanity-Dark
Faenza
ubuntukylin-icon-theme
unity-icon-theme
    
por Sergiy Kolodyazhnyy 28.12.2015 / 10:48