นี่คือหนึ่งซับ:
ls -AQp | grep "\.mp3\"$" | xargs `xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'`
เมื่อฉันติดตั้ง VLC (และเป็นค่าเริ่มต้นสำหรับ mp3s) สิ่งนี้จะเปิดไฟล์ mp3 ทั้งหมดในไดเรกทอรีที่มี VLC สำหรับฉัน นี่ไม่ใช่ประเภทใด ๆ ของ " universal-solution-it-all-and-work-in-every-freaking-case " แต่มันควรจะใช้ได้
คำอธิบาย:
ls -AQp
แสดงรายการไฟล์ "เกือบทั้งหมด" อ้างถึงชื่อไฟล์และต่อท้ายสแลชกับชื่อของไดเรกทอรี แทนที่-p
ด้วย--file-type
หากคุณต้องการยกเว้นการเชื่อมโยงด้วย การอ้างอิงในกรณีที่มีช่องว่างในชื่อไฟล์
grep "\.mp3\"$"
เลือกเฉพาะไฟล์ที่ลงท้ายด้วย ".mp3" (บวกเครื่องหมายคำพูดคู่)
xargs
เปลี่ยนเส้นทางล็อตทั้งหมดไปยังโปรแกรมที่ส่งคืน subshell
subshell:
xdg-mime query default audio/mpeg
ช่วยให้แอปเริ่มต้นชื่อ 's ในรูปแบบ 'app.desktop' audio/mpeg
สำหรับไฟล์ที่มีละครใบ้คือ คุณสามารถตรวจสอบชนิด mime สำหรับไฟล์ใด ๆ xdg-mime query filetype /path/to/file
ในสภาพแวดล้อมของคุณด้วย ฉันได้ "audio / mpeg" สำหรับไฟล์ mp3
grep -oP '.+(?=\.desktop)'
รับ "แอพ" จาก "app.desktop"
หากคุณจะใช้มันบ่อยๆในระบบที่จะไม่เปลี่ยนแปลงมากนักคุณอาจต้องย่อให้สั้นลง:
ls -AQp | grep "\.mp3\"$" | xargs default_app
ที่ที่คุณแทนที่default_app
ด้วยโปรแกรมจริงที่เปิดขึ้นพร้อมกับไฟล์ คุณสามารถหาชื่อด้วย:
xdg-mime query default audio/mpeg | grep -oP '.+(?=\.desktop)'
xdg-open
จะไม่ทำงานกับปัญหานี้เพราะมันยอมรับเพียงหนึ่งอาร์กิวเมนต์โดยการออกแบบ หากใช้
xargs -n1
งานคุณอาจต้องเจอกับปัญหาที่แอพที่เป็นปัญหาอาจเปิดไฟล์ทุกไฟล์ในอินสแตนซ์ใหม่ซึ่งอาจดูน่าเกลียดมากกว่าหนึ่งวิธี
xdg-open
ควรจะสามารถทำสิ่งนี้ได้โดยค่าเริ่มต้น ... เพียงแค่ส่งรายการอาร์กิวเมนต์ไปยังโปรแกรม มากับคนที่ freedesktop.org! :-)