Berikut ini adalah one-liner:
ls -AQp | grep "\.mp3\"$" | xargs `xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'`
Karena saya telah menginstal VLC (dan sebagai default untuk mp3), ini membuka semua file mp3 dalam direktori dengan VLC untuk saya. Ini bukan semacam " universal-menyelesaikan-itu-semua-dan-bekerja-dalam-setiap-freaking-case ", tetapi harus bekerja.
Penjelasan:
ls -AQp
daftar "hampir semua" file, mengutip nama file dan menambahkan slash ke nama direktori. Ganti -p
dengan --file-type
jika Anda ingin mengecualikan symlink juga. Mengutip jika ada spasi dalam nama file.
grep "\.mp3\"$"
hanya memilih file yang diakhiri dengan ".mp3" (ditambah kutipan ganda).
xargs
mengalihkan seluruh lot ke program yang mengikuti pengembalian subkulit.
subkulit:
xdg-mime query default audio/mpeg
memberi nama aplikasi default dalam format "app.desktop" untuk file yang pantomimnya audio/mpeg
. Anda dapat memeriksa mimetype untuk file apa pun di lingkungan Anda xdg-mime query filetype /path/to/file
. Saya mendapat "audio / mpeg" untuk file mp3.
grep -oP '.+(?=\.desktop)'
mendapat "aplikasi" dari "app.desktop".
Jika Anda akan menggunakannya sangat sering dalam sistem yang tidak akan banyak berubah, Anda mungkin ingin mempersingkatnya menjadi ini:
ls -AQp | grep "\.mp3\"$" | xargs default_app
Di mana Anda mengganti default_app
dengan program aktual yang terbuka dengan file. Anda dapat mengetahui namanya dengan ini:
xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'
xdg-open
tidak akan bekerja dengan masalah ini, karena hanya menerima satu argumen dengan desain. Jika menggunakan
xargs -n1
, Anda mungkin akan menabrak dinding dengan bahwa aplikasi yang dihasilkan tersebut dapat membuka setiap file dalam contoh baru, yang mungkin jelek di lebih dari satu cara.
xdg-open
harus benar-benar dapat melakukan ini secara default ... hanya meneruskan daftar argumen ke program. Ayo orang-orang freedesktop.org! :-)