linux查找文件并创建硬链接

linux查找文件并创建硬链接,linux,bash,Linux,Bash,我试图找到一个文件,然后在另一个目录中创建一个同名的硬链接。但这不起作用,如果我使用-exec并在关闭后,它将显示一个结果。我已经和cp合作过了,但是我决定做一个硬链接 find . -iname "*sample*" -exec link {} ~/{} \; 问题来自这样一个事实,{}包含找到的文件的路径;因此,~/{}不是~中的路径,而是在一些不存在的子目录中 我没有找到使用find或xargs获取{}基名的方法 以下是一个可行但不安全的解决方案: find . -iname "*sam

我试图找到一个文件,然后在另一个目录中创建一个同名的硬链接。但这不起作用,如果我使用-exec并在关闭后,它将显示一个结果。我已经和cp合作过了,但是我决定做一个硬链接

find . -iname "*sample*" -exec link {} ~/{} \;

问题来自这样一个事实,
{}
包含找到的文件的路径;因此,
~/{}
不是
~
中的路径,而是在一些不存在的子目录中

我没有找到使用
find
xargs
获取
{}
基名的方法

以下是一个可行但不安全的解决方案:

find . -iname "*sample*" | while read f ; do link "$f" "$HOME/${f##*/}" ; done

您可以在
find
read
之间添加一个过滤器,以消除“危险”的文件名。

目标目录与源目录是否位于同一物理设备上?硬链接不能跨越装入点。@shellter脚本在“link{}~/{}\;”之前工作正常。“什么也没发生。”威兰普尔塞尔:是的,是的。我只有一个硬盘。@DavidCuster:您收到错误消息了吗?根据我收到的错误消息,我认为我们需要一种方法来删除从subdir查找返回的任何前导路径信息。您是否可以尝试像这样屏蔽括号:
-exec link“{}”~/“{}”这可能与您使用的shell以及如何扩展有关。这似乎不是问题,因为它在
-execdir
中也不起作用,并且没有发出错误消息。@EdouardThiel link:无法创建链接“~/file”到。/folder1/folder2/file”:没有这样的文件或directory@DavidCuster你在开玩笑吗??从一开始你就说你没有任何错误消息!回复:basename:
find-iname'*sample*'-execbash-c'链接“$0”~/“${0}.*/}”{}。顺便说一句,
~/
不应该在引号内,否则它不会被shell扩展。@gniourf\u gniourf我发誓,我收到消息的唯一时间是在使用此命令时。我想知道以前是否很难链接到/home/user。