背景故事:
我的音乐收藏中有MP3和FLAC文件。我在music/mp3下组织了MP3s,在music/flac下组织了flac。虽然我更喜欢听FLAC文件,但我的大部分音乐都是MP3s格式的。音乐/mp3中的几首歌曲与音乐/flac中的歌曲是相同的。
当我的桌面音乐播放器创建音乐目录库时,这些歌曲会被复制。我希望将/ MP3s /mp3独有的音乐链接到它们自己的目录,以便我的音乐播放器可以扫描它和/ music /flac。这样所有的歌曲,我有一个FLAC编码和独特的MP3s,将被播放。
问题:
我确定了哪些歌曲是音乐/mp3独有的,并且我有一个文件,其中包含由换行符分隔的绝对路径名。如何让ln命令遍历每一行(创建一个链接,比如音乐/mp3_ line )?
发布于 2012-02-27 04:31:54
我认为ln不具备从文件创建链接的能力,但是既然您使用的是bash,那么您可以这样做:
for i in `cat file`;do ln -s $i;done其中,file是具有绝对路径的文件的名称
发布于 2012-02-27 05:08:53
如果所有文件都在同一文件系统上,则可以使用硬链接而不是软链接。这样做的好处是您不再需要使用绝对路径名。在这种情况下,我很想做这样的事情:
所以..。假设您有一个文件树,如下所示:
/music /音乐/MP3/音乐/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循环则不会。
https://stackoverflow.com/questions/9456695
复制相似问题