Aqui está uma frase:
ls -AQp | grep "\.mp3\"$" | xargs `xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'`
Como eu tenho o VLC instalado (e como padrão para mp3s), isso abre todos os arquivos mp3 em um diretório com VLC para mim. Este não é nenhum tipo de " solução universal para resolver tudo e trabalhar em todos os casos ", mas deve funcionar.
Explicação:
ls -AQplista "quase todos" os arquivos, citando nomes de arquivos e acrescentando barras aos nomes dos diretórios. Substitua -ppor --file-typese desejar excluir links simbólicos também. Citação em caso de espaços nos nomes de arquivos.
grep "\.mp3\"$" seleciona apenas os arquivos que terminam com ".mp3" (além de aspas duplas).
xargs redireciona todo o lote para programar o retorno do subshell seguinte.
subshell:
xdg-mime query default audio/mpegfornece o nome padrão do aplicativo no formato "app.desktop" para arquivos cuja mímica é audio/mpeg. Você pode verificar o tipo MIMET para qualquer arquivo em seu ambiente com xdg-mime query filetype /path/to/file. Eu tenho "audio / mpeg" para arquivo mp3.
grep -oP '.+(?=\.desktop)' obtém o "app" de "app.desktop".
Se você for usá-lo com muita frequência em um sistema que não vai mudar muito, convém abreviá-lo para isso:
ls -AQp | grep "\.mp3\"$" | xargs default_app
Onde você substitui default_apppelo programa real que é aberto com os arquivos. Você pode descobrir seu nome com isso:
xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'
xdg-opennão funcionará com esse problema, porque ele aceita apenas um argumento por design. Se estiver usando
xargs -n1, é provável que você atinja o muro com a possibilidade de o aplicativo resultante em questão abrir todos os arquivos em uma nova instância, que pode ficar feia em mais de uma maneira.
xdg-openrealmente deve ser capaz de fazer isso por padrão ... basta passar a lista de argumentos para o programa. Vamos lá pessoal do freedesktop.org! :-)