背景故事:
我的音乐收藏中有MP3和FLAC文件。我有音乐/ mp3下的MP3和音乐/ flac中的FLAC。虽然我更喜欢听FLAC文件,但我的大多数音乐都是MP3。音乐/ mp3中的几首歌曲与music / flac中的歌曲相同。
当我的桌面音乐播放器创建音乐目录库时,这些歌曲会重复。我想将我/音乐/ mp3独有的MP3链接到他们自己的目录,以便我的音乐播放器可以扫描它和/ music / flac。这样,我将播放所有具有FLAC编码和独特MP3的歌曲。
问题:
我确定哪些歌曲是音乐/ mp3独有的,我有一个由换行符分隔的绝对路径名的文件。如何让ln命令遍历每一行(创建一个链接,例如music / mp3_unique)?
答案 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循环不会。