Saya mencoba untuk membuka semua file .mp3 saya dari folder menggunakan xdg-open
tetapi saya menemukan itu membuka hanya satu! Jadi saya mencari sedikit tetapi tidak ada pertanyaan seperti itu! Saya menemukan "evince" tetapi ternyata itu membuka file teks dan gnome-open juga membuka satu file.
Saya ingin membuka semua file dengan format yang sama di folder dari terminal. Saya baru di Ubuntu, jadi tolong jelaskan sedikit lebih banyak.
xdg-open
harus benar-benar dapat melakukan ini secara default ... hanya meneruskan daftar argumen ke program. Ayo orang-orang freedesktop.org! :-)Jawaban:
Memang. Anda bisa menggunakan shell untuk mengatasi ini, seperti ini:
Atau, jika Anda menginginkannya lebih kuat, cobalah
sumber
find: paths must precede expression: -
)..
dan mendapatkan pesan kesalahan yang sama. Di direktori lain, saya dapatxdg-open: unexpected argument './foo.mp3'
dengan atau tanpa.
.Anda dapat mencoba:
ls *.mp3
wil daftar semua file mp3 dari direktori saat ini, masing-masing pada baris sendiri, dan output disalurkan kewhile
loop witch membaca konten setiap baris dan itu akan membuka konten itu (yang merupakan nama file mp3 dalam kasus ini ) dalam aplikasi standarnya.sumber
-r
benderanya. Saya pikir ini perlu untuk mem-parsing file dengan benar dengan nama `\`.man read
bendera saya tidak terdaftar sama sekali! Saya tidak mendapatkan kesalahan dalam pengujian saya, tapi itu mungkin karena saya buataaa
danaa\a
. Dalam hal ini,xdg-open
coba bukaaaa
dua kali saja, dan tidakaa\a
. (Oke, ini jadi sedikit berbelit-belit, tapi saya pikir kode harus bekerja untuk semua situasi. Mungkinfind
merupakan pilihan yang lebih baik, untuk menghindari batasanls
danread
.) Juga, bagaimana bisa membuat kerusakan persis? Bukankah itu hanya akan mem-parsing outputls
?man read
ke membaca fungsi C (bagian 2 dari pria itu). Iniread
adalah perintah bash builtin, jadi Anda harus mencari diman bash
suatu tempat di baris 4632. @Sparhawk - terima kasih telah mengedit.Saya menulis sebuah skrip kecil
/usr/local/bin/o
, meskipun Anda bisa memanggilnya/usr/local/bin/xdg-open
dan mengganti perintah default jika Anda mau (dengan asumsi Anda$PATH
memprioritaskannya). Juga, jika tidak diberikan argumen, skrip ini akan membuka direktori saat ini.Jika Anda tidak ingin membuka direktori saat ini tanpa argumen, ini mempertahankan perilaku default, yaitu menunjukkan penggunaan.
NB ini agnostik tentang kemampuan program default untuk mem-parsing beberapa argumen, tetapi sebaliknya akan memanggil setiap perintah satu kali untuk setiap argumen. Saya tidak berpikir ada cara yang elegan di sekitar ini, karena pengguna mungkin ingin
xdg-open
berbagai jenis file, dan beberapa perintah tidak akan mengambil banyak argumen.sumber
Saya menulis
bash
skrip ini untuk mencakup semua kasus penggunaan yang dapat saya pikirkan:Fitur:
max=20 open $(ls -Q)
all=1 open $(ls -Q)
sumber
Berikut ini adalah one-liner:
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 pantomimnyaaudio/mpeg
. Anda dapat memeriksa mimetype untuk file apa pun di lingkungan Andaxdg-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:
Di mana Anda mengganti
default_app
dengan program aktual yang terbuka dengan file. Anda dapat mengetahui namanya dengan ini:xdg-open
tidak akan bekerja dengan masalah ini, karena hanya menerima satu argumen dengan desain. Jika menggunakanxargs -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.sumber
Anda dapat menggunakan perintah ini
hanya jika pemutar musik Anda mendukung banyak file sebagai argumen baris perintah. Ganti
vlc
dengan pemutar musik pilihan Anda.Ini berfungsi dengan RhythmBox dan VLC dalam pengujian saya.
sumber
find
...-exec
menjalankan perintah individual pada setiap file? Dan juga, jika pemutar musik Anda mendukung banyak file sebagai argumen baris perintah, Anda bisa menggunakannyavlc *.mp3
.\+
di akhirfind
jika Anda akanvlc
tetap menggunakan hardcode . (Pertanyaannya menunjukkan mereka semua dalam satu direktori.)+
sudah, tidak perlu\+
.Gunakan perintah ini untuk file mp3 jika Anda ingin membuka file di VLC.
Catatan: Gunakan
cvlc
untuk menggunakan VLC tanpa antarmuka.sumber