0

裏話:

音楽コレクションにMP3ファイルとFLACファイルがあります。私はMP3をmusic/mp3で編成し、FLACをmusic/flacで編成しています。私はFLACファイルを聴くのが好きですが、私の音楽のほとんどはMP3です。music / mp3の曲のいくつかは、music/flacの曲と同じです。

デスクトップミュージックプレーヤーがミュージックディレクトリのライブラリを作成すると、それらの曲が複製されます。/ music / mp3に固有のMP3を独自のディレクトリにリンクして、音楽プレーヤーがそれと/ music/flacをスキャンできるようにします。そうすれば、私がFLACエンコーディングを使用しているすべての曲と固有のMP3が再生されます。

質問:

どの曲がmusic/mp3に固有であるかを判断し、改行で区切られた絶対パス名のファイルを持っています。lnコマンドで各行をループさせる(たとえば、music / mp3_uniqueへのリンクを作成する)にはどうすればよいですか?

4

2 に答える 2

0

ファイルからリンクを作成する機能はないと思いますlnが、bashを使用しているので、次のことができます。

for i in `cat file`;do ln -s $i;done

ここfileで、は絶対パスを含むファイルの名前です

于 2012-02-26T20:31:53.807 に答える
0

すべてのファイルが同じファイルシステム上にある場合は、ソフトリンクではなくハードリンクを使用できます。これには、絶対パス名を使用する必要がなくなるという利点があります。その場合、私は次のようなことをしたくなるでしょう:

つまり...次のようなファイルツリーがあるとします。

/ music / music / mp3 / music / flac

musicの下に'scanme'ディレクトリを作成し、再生したいすべての音楽へのハードリンクを作成します。

mkdir /music/scanme
cd /music/scanme
( cat ../mp3/unique.txt; find ../flac ) | while read file
do
    ln "$file" $(basename "$file")
done

これは、ファイル名にスペースが含まれている場合に機能しますが、ストレートforループでは機能しません。

于 2012-02-26T21:08:52.673 に答える