Tentei abrir todos os meus arquivos .mp3 de uma pasta usando, xdg-open
mas descobri que ele abre apenas um! Então eu procurei um pouco, mas não havia essa pergunta! Eu encontrei "evince", mas aparentemente ele abre arquivos de texto e o gnome-open também abre um arquivo.
Quero abrir todos os arquivos do mesmo formato em uma pasta do terminal. Eu sou novo no Ubuntu, então explique um pouco mais.
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! :-)Respostas:
De fato. Você pode usar o shell para contornar isso, assim:
Ou, se você quiser mais robusto, tente
fonte
find: paths must precede expression: -
)..
e recebi a mesma mensagem de erro. Em outro diretório, receboxdg-open: unexpected argument './foo.mp3'
com ou sem.
.Podes tentar:
ls *.mp3
listará todos os arquivos mp3 do diretório atual, cada um em sua própria linha, e a saída será canalizada para umwhile
loop, que lerá o conteúdo de cada linha e abrirá esse conteúdo (que é o nome de um arquivo mp3 nesse caso) ) em seu aplicativo padrão.fonte
-r
bandeira. Eu acho que é necessário analisar corretamente os arquivos com um `\` em seu nome.man read
também não tem nenhuma bandeira listada! Não recebo um erro nos meus testes, mas é provavelmente porque eu crieiaaa
eaa\a
. Nesse caso,xdg-open
apenas tenta abriraaa
duas vezes, e nãoaa\a
. (Ok, está ficando um pouco complicado, mas acho que o código deve funcionar para todas as situações. Talvezfind
seja uma opção melhor, para evitar as limitações dels
eread
.) Além disso, como ele pode causar estragos exatamente? Não será apenas analisar a saída dels
?man read
está se referindo à função C lida (seção 2 do manual). Esteread
é um comando interno do bash, então você deve procurar emman bash
algum lugar na linha 4632. @Sparhawk - obrigado pela edição.Escrevi um pequeno script
/usr/local/bin/o
, embora você possa chamá-lo/usr/local/bin/xdg-open
e substituir o comando padrão, se desejar (assumindo que o seu$PATH
é prioritário). Além disso, se não houver argumento, esse script abrirá o diretório atual.Se você não deseja abrir o diretório atual sem argumentos, isso mantém o comportamento padrão, ou seja, mostra o uso.
Nota: isso é independente da capacidade do programa padrão de analisar vários argumentos, mas, em vez disso, chamará cada comando uma vez para cada argumento. Eu não acho que exista uma maneira elegante de contornar isso, pois os usuários podem querer
xdg-open
diferentes tipos de arquivos, e alguns comandos não terão vários argumentos de qualquer maneira.fonte
Eu escrevi este
bash
script para cobrir todos os casos de uso em que pude pensar:Recursos:
max=20 open $(ls -Q)
all=1 open $(ls -Q)
fonte
Aqui está uma frase:
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 comxdg-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:
Onde você substitui
default_app
pelo programa real que é aberto com os arquivos. Você pode descobrir seu nome com isso:xdg-open
não funcionará com esse problema, porque ele aceita apenas um argumento por design. Se estiver usandoxargs -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.fonte
Você pode usar esses comandos
somente se o seu music player suportar vários arquivos como argumentos de linha de comando. Substitua
vlc
pelo seu music player de sua escolha.Isso funciona com o RhythmBox e o VLC nos meus testes.
fonte
find
...-exec
executa comandos individuais em cada arquivo? E também, se o seu music player suportar vários arquivos como argumentos de linha de comando, você pode simplesmente usarvlc *.mp3
.\+
no finalfind
se você for codificar devlc
qualquer maneira. (A pergunta sugere que eles estão todos em um diretório.)+
é suficiente, não há necessidade\+
.Use este comando para arquivos mp3 se desejar abrir arquivos no VLC.
Nota: Use
cvlc
para usar o VLC sem interface.fonte