İşte bir astar:
ls -AQp | grep "\.mp3\"$" | xargs `xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'`
VLC'yi yüklediğimden (ve mp3'ler için varsayılan olarak), bu benim için VLC bulunan bir dizindeki tüm mp3 dosyalarını açar. Bu, "herhangi bir tür değildir , evrensel-çözmek-it-all-ve-iş-in-her-durum heyecanlanıyorum ", ancak gerektiği çalışır.
Açıklama:
ls -AQp
"hemen hemen tüm" dosyaları listeler, dosya adlarını gösterir ve dizin adlarına eğik çizgi ekler. Simge bağlantılarını da hariç tutmak istiyorsanız -p
ile değiştirin --file-type
. Dosya adlarında boşluk olması durumunda alıntı yapma.
grep "\.mp3\"$"
yalnızca ".mp3" ile biten dosyaları (artı çift tırnak işareti) seçer.
xargs
tüm alt kabuğu aşağıdaki alt kabuk döndürme programlamak için yeniden yönlendirir.
altkabuk:
xdg-mime query default audio/mpeg
mime olan dosyalar için "app.desktop" biçiminde varsayılan uygulamanın adını verir audio/mpeg
. Mimetype ile ortamınızdaki herhangi bir dosyayı kontrol edebilirsiniz xdg-mime query filetype /path/to/file
. Mp3 dosyası için "ses / mpeg" var.
grep -oP '.+(?=\.desktop)'
"app" dan "app.desktop" alır.
Çok fazla değişmeyecek bir sistemde çok sık kullanacaksanız, bunu kısaltmak isteyebilirsiniz:
ls -AQp | grep "\.mp3\"$" | xargs default_app
default_app
Dosyalarla açılan gerçek programla değiştirdiğiniz yer . Bununla adını anlayabilirsiniz:
xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'
xdg-open
tasarım ile sadece bir argümanı kabul ettiği için bu problemle çalışmaz. Kullanıyorsanız
xargs -n1
, söz konusu sonuçtaki uygulamanın her dosyayı yeni bir durumda açabileceği ve birden fazla şekilde çirkin olabileceği için duvara çarpıyorsunuz.
xdg-open
bunu gerçekten varsayılan olarak yapabilmelidir ... sadece argüman listesini programa iletmeniz yeterlidir. Haydi freedesktop.org insanı! :-)