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 -AQp
lista "quase todos" os arquivos, citando nomes de arquivos e acrescentando barras aos nomes dos diretórios. Substitua -p
por --file-type
se 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/mpeg
fornece 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_app
pelo programa real que é aberto com os arquivos. Você pode descobrir seu nome com isso:
xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'
xdg-open
nã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-open
realmente deve ser capaz de fazer isso por padrão ... basta passar a lista de argumentos para o programa. Vamos lá pessoal do freedesktop.org! :-)