2012-02-26 190 views
0

背景故事:在我的音乐收藏如何从文件中的文件路径创建链接?

我有MP3和FLAC文件。我有音乐/ mp3下的MP3和FLAC中的音乐/ flac。虽然我更喜欢听FLAC文件,但我的大部分音乐都是MP3。音乐/ mp3中的几首歌曲与音乐/ flac中的歌曲相同。

当我的桌面音乐播放器创建音乐目录的库时,这些歌曲会被复制。我想将我/ MP3/MP3专有的MP3链接到他们自己的目录,以便我的音乐播放器可以扫描它和/音乐/ FLAC。这样,我将播放所有具有FLAC编码和唯一MP3的歌曲。

问:

我确定哪些歌曲是独特的音乐/ MP3,和我有换行分隔的绝对路径名的文件。我如何让ln命令遍历每一行(创建一个链接来说,音乐/ mp3_unique)?

回答

0

我不认为ln必须创建从一个文件链接的功能,但因为你是使用bash,你可以这样做:

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

其中file是绝对的文件名路径

+0

我有一个'嘟嘟!'一旦我看到你的优雅和简单的解决方案。我缺少的一点是捕捉文件来创建一个流。谢谢! – cheapous 2012-02-26 21:32:10

+0

哦,是的,第二个参数ln应该是链接到的目标目录。 – cheapous 2012-02-27 07:26:07

0

如果所有文件都在同一文件系统上,则可以使用硬链接而不是软链接。这具有您不再需要使用绝对路径名称的优点。在这种情况下,我会很想做这样的事情:

所以...说你有一个文件树看起来是这样的:

/音乐 /音乐/ MP3 /音乐/ FLAC

下创建音乐“scanme”目录下,并创建硬链接到所有的音乐,你要玩:

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

这将工作时的文件名包含空格,其中直循环不会。