Linux 如何从文件中的文件路径创建链接?
背景故事: 我的音乐收藏中有MP3和FLAC文件。我在music/mp3下组织了mp3,在music/flac中组织了FLACs。虽然我更喜欢听FLAC文件,但我的大部分音乐都是MP3。music/mp3中的一些歌曲与music/flac中的歌曲相同 当我的桌面音乐播放器创建音乐目录库时,这些歌曲将被复制。我想将/music/mp3独有的mp3链接到它们自己的目录,以便我的音乐播放器可以扫描它和/music/flac。这样,我所有的歌曲,我有一个FLAC编码的,独特的MP3,将被播放 问题:Linux 如何从文件中的文件路径创建链接?,linux,bash,shell,loops,ln,Linux,Bash,Shell,Loops,Ln,背景故事: 我的音乐收藏中有MP3和FLAC文件。我在music/mp3下组织了mp3,在music/flac中组织了FLACs。虽然我更喜欢听FLAC文件,但我的大部分音乐都是MP3。music/mp3中的一些歌曲与music/flac中的歌曲相同 当我的桌面音乐播放器创建音乐目录库时,这些歌曲将被复制。我想将/music/mp3独有的mp3链接到它们自己的目录,以便我的音乐播放器可以扫描它和/music/flac。这样,我所有的歌曲,我有一个FLAC编码的,独特的MP3,将被播放 问题: 我
我确定了哪些歌曲是music/mp3所独有的,并且我有一个由新行分隔的绝对路径名文件。如何让ln命令在每一行中循环(创建一个链接,比如说,music/mp3\u unique)?我认为
ln
无法从文件中创建链接,但由于您使用的是bash,您可以这样做:
for i in `cat file`;do ln -s $i;done
其中,
file
是具有绝对路径的文件名如果所有文件都位于同一文件系统上,则可以使用硬链接而不是软链接。这样做的优点是不再需要使用绝对路径名。在这种情况下,我很想做这样的事情:
所以。。。假设您有一个类似以下内容的文件树:
/音乐
/音乐/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循环则不包含空格。我有一个“duh!”有一次我看到了你优雅而简单的解决方案。我缺少的一点是对文件进行cat以创建流。谢谢哦,是的,ln的第二个参数应该是要链接到的目标目录。