如何创建指向除某些文件之外的目录的符号链接?

如何创建指向除某些文件之外的目录的符号链接?

我想从我的主目录创建一个符号链接到Dropbox不包括视频

这是我所知道的:

ln -s /home/pt/ '/home/pt/Dropbox'

我该怎么办?如果我想删除符号链接会发生什么?

答案1

如果为每个文件/目录创建符号链接的话会更好。

mkdir /home/pt/Dropbox/pt
for d in /home/pt/*; do ln -s "$d" '/home/pt/Dropbox/pt/'; done

然后删除链接视频Dropbox

rm /home/pt/Dropbox/pt/Videos
rm /home/pt/Dropbox/pt/Dropbox

要删除所有链接,使用

rm /home/pt/Dropbox/pt/*
rmdir /home/pt/Dropbox/pt

答案2

你的问题似乎是XY问题。此外,问题听起来像这样:

  • 如何从纽约步行到华盛顿而不经过伦敦。

这是因为你可能误解了符号链接

符号链接(也称为 symlink 或 soft link)是一种特殊类型的文件,它以绝对路径或相对路径的形式包含对另一个文件或目录的引用,并影响路径名解析。[...]

符号链接包含一个文本字符串,该文本字符串会被操作系统自动解释并解析为另一个文件或目录的路径。这个其他文件或目录称为“目标”。符号链接是独立于其目标而存在的第二个文件。如果删除符号链接,其目标不会受到影响。如果符号链接指向某个目标,而该目标后来被移动、重命名或删除,则该符号链接不会自动更新或删除,而是继续存在并指向旧目标(现在为不存在的位置或文件)。指向已移动或不存在的目标的符号链接有时被称为损坏、孤立、死亡或悬空。

因此,如果您/home/pt/Dropbox为 创建一个符号链接/home/pt//home/pt/Dropbox则操作系统将解释此 ( ) 并将其视为/home/pt/目录的路径。仅此而已;文件或目录包含什么并不重要/home/pt/。当您输入 时,/home/pt/Dropbox实际上是在 中输入/home/pt/

现在,我假设您实际上想要在/home/pt/Dropbox目录中为每个文件和文件夹创建符号链接,但/home/pt/不包括/home/pt/Videos。 如果是这样,请首先确保该/home/pt/Dropbox目录存在:

mkdir -p ~/Dropbox

然后使用以下命令创建符号链接(不包括Videos) :Dropbox

cd ~
for file in *; do if [[ ! "$file" =~ Video|Dropbox ]]; then ln -s "$HOME/$file" "Dropbox/$file"; fi; done

相关内容