0

ディレクトリ内のすべての音楽ファイルを順番に再生する mplayer のコマンドを作成しようとしています。

alias mplay='mplayer -playlist <(find "$PWD" -type f|sort -n)'

音楽を再生しているディレクトリに既にいる場合、これは正常に機能します。実際、ディレクトリに戻って、たとえば「mplay MusicFileDirectory」と入力しても機能します。

ただし、再生元のディレクトリにいない場合、コマンドは中断し、ファイルの番号は 1、2、3 ... 10、11 など (01、02 ... 11 ではなく) - 10、11 ファイル2 番目のファイルの前に再生されるようになりました。

これは、並べ替えが展開されたファイル パス、つまり MusicFileDirectory/1 に適用されているためで、数値的に並べ替えられません。

たとえば、「mplay /home/james/Music/MusicFileDirectory」と入力すると、ディレクトリ内のファイルの名前のみを使用して、プレイリスト?

4

2 に答える 2

2

100% うまくいくかどうかはわかりませんが、sort -V を試してみてください。

編集: jordanm が指摘しているように、これは明らかに新しい GNU 拡張機能です。

于 2012-06-25T21:35:43.703 に答える
0

ソートには、フィールド区切り (-t) と位置 (-k) を指定するオプションがあります。次のようなもの: sort -n -t/ -k2.

とはいえ、一般的なソリューションを任意のディレクトリから機能させたい場合は、シングルライナーのエイリアスは難しすぎる (そして複雑になる) のではないかと思います。最初にパス内の「/」の数を数えて(たとえばx、)、次に実行する小さなスクリプトを使用することをお勧めしますsort -n -t/ -k$((x+1))

于 2012-06-25T21:51:37.213 に答える