鉴于:
文件夹结构为(file.txt
每个目录中都是纯文本文件,而不是符号链接):
/basedir/A/file.txt
/basedir/B/file.txt
/basedir/C/file.txt
与file.txt
位于/mydir
:
/mydir/file.txt
我需要一个可以从中运行的命令/basedir
:
- 递归查找所有
/file.txt
(在.A/
,./B
和./C
) - 删除找到的
file.txt
文件 - 创建一个符号链接
/mydir/file.txt
可以通过单个 bash 命令来完成吗?
谢谢你!
答案1
这将做到这一点:
find /basedir -type f -name file.txt -exec ln -sf /mydir/file.txt '{}' \;
这会查找所有名为file.txt
under 的文件/basedir
,并在每个文件上运行ln
,将其 ( -f
) 替换为到 的符号链接 ( -s
) /mydir/file.txt
。