如何从文件中的文件路径创建链接?

时间:2012-02-26 20:09:11

标签: linux bash shell loops ln

背景故事:

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

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

问题:

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

2 个答案:

答案 0 :(得分:0)

我不认为ln能够从文件创建链接,但由于您正在使用bash,您可以这样做:

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

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

答案 1 :(得分: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

当文件名包含空格时,这将起作用,直接for循环不会。