Aqui está você. O resultado do comando a seguir é uma lista de valores separados por vírgulas. Primeira coluna: caminho para a entrada .desktop, segunda coluna: caminho para o ícone, terceira coluna: o executável.
find /usr/share/applications/ -name '*.desktop' -exec perl -ne 'BEGIN { $pname = $ARGV[0] ; } ; /(Icon|Exec)=(.*)/ and $ret{} = ; END { printf "%s,%s,%s\n", $pname, $ret{Icon}, $ret{Exec} ; }' {} \;
Explicação: find
prepara uma lista de arquivos que terminam com .desktop e são encontrados em / usr / share / applications ou em um subdiretório, e chama ( -exec ... {} \;
) um perlinereliner para analisar as informações.
O Perl é iniciado com a opção -n
, que cria um loop implícito em iteração sobre cada linha do arquivo fornecido, e uma opção -e
que especifica para executar o argumento fornecido.
O programa perl contém os blocos BEGIN e END a serem executados antes e depois de cada arquivo .desktop ser analisado (o perliner onlininer é chamado separadamente a cada vez que cada arquivo que find
localizou). O bloco BEGIN registra o nome do arquivo (que é fornecido como o primeiro argumento para o oneliner, o {}
pragma de find
) e os blocos END resumem as informações de maneira separada por vírgulas.