按名称递归查找文件,删除它并创建符号链接

按名称递归查找文件,删除它并创建符号链接

鉴于:

文件夹结构为(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.txtunder 的文件/basedir,并在每个文件上运行ln,将其 ( -f) 替换为到 的符号链接 ( -s) /mydir/file.txt

相关内容