xdg-open
を使用して、フォルダからすべての.mp3ファイルを開こうとしましたが、1つしか開かないことがわかりました。それで少し検索しましたが、そんな質問はありませんでした! 「evince」を見つけましたが、どうやらテキストファイルを開き、gnome-openも1つのファイルを開きます。
ターミナルからフォルダー内の同じ形式のすべてのファイルを開きたい。私はUbuntuが初めてなので、もう少し説明してください。
確かに。次のように、シェルを使用してこれを回避できます。
ls -b *.mp3 | xargs -n 1 xdg-open
または、より堅牢にしたい場合は、試してください
find -iname '*.mp3' -print0 | xargs -0 -n 1 xdg-open
あなたが試すことができます:
ls *.mp3 | while read -r file; do xdg-open "$file"; done
ls *.mp3
は、現在のディレクトリからすべてのmp3ファイルをリストします。各ファイルはそれぞれ独自の行にあり、出力はwhile
ループにパイプされ、各行のコンテンツを読み取ります。はデフォルトのアプリケーションのmp3ファイルの名前です(この場合)。
小さなスクリプト/usr/local/bin/o
を作成しましたが、/usr/local/bin/xdg-open
と呼んで、必要に応じてデフォルトのコマンドを置き換えることができます($PATH
が優先する場合)。また、引数が指定されていない場合、このスクリプトは代わりに現在のディレクトリを開きます。
#!/usr/bin/env bash
if [ $# -eq 0 ]; then
xdg-open . &> /dev/null
else
for file in "$@"; do
xdg-open "$file" &> /dev/null
done
fi
引数なしで現在のディレクトリを開きたくない場合、これはデフォルトの動作を保持します。つまり、使用法を示します。
#!/usr/bin/env bash
if [ $# -eq 0 ]; then
xdg-open &> /dev/null
else
for file in "$@"; do
xdg-open "$file" &> /dev/null
done
fi
N.B.これは、複数の引数を解析するデフォルトのプログラムの機能については不可知ですが、代わりに各引数に対して各コマンドを1回呼び出します。ユーザーがさまざまな種類のファイルをxdg-open
したいと思うかもしれず、いくつかのコマンドはとにかく複数の引数をとらないかもしれないので、私はこの周りにエレガントな方法があるとは思わない。
このbash
スクリプトを書いて、考えられるすべての使用例をカバーしました。
#!/bin/bash
set -euo pipefail; shopt -s failglob # bash strict mode
max=${max:-10} # Set default maximum if $max is not set
[[ ${all:-} ]] && max=$# # Set max to all files if $all is non-null
for file in "${@:1:$max}"; do
xdg-open "$file"
done &>>~/.xsession-errors
特徴:
max=20 open $(ls -Q)
で新しい最大値を設定できますall=1 open $(ls -Q)