递归查找所有子文件夹的文件,并将它们与其所在文件夹的名称进行符号链接

递归查找所有子文件夹的文件,并将它们与其所在文件夹的名称进行符号链接

希望这样的事情是可能的,我想扫描子文件夹中的所有文件

/home/user/source/

并在不同的文件夹中使用不同的文件扩展名创建指向这些文件的符号链接。因此,我从以下文件夹结构开始:

/home/user/source/folder1/random_file_name.bin
/home/user/source/folder2/random_file_name.bin
/home/user/source/folder3/random_file_name.bin
...

我想创建指向 bin 文件的符号链接,如下所示:

/home/user/dest/folder1.txt -> /home/user/source/folder1/random_file_name.bin
/home/user/dest/folder2.txt -> /home/user/source/folder2/random_file_name.bin
/home/user/dest/folder3.txt -> /home/user/source/folder3/random_file_name.bin
...

我可以只用一个循环来执行此操作吗?还是必须扫描“源”的每个文件夹以提取文件夹名称,然后在每个文件夹中循环以查找每个文件夹中的 bin 文件?每个文件夹只有一个 bin 文件,顺便说一下,其名称是随机的。

除非有办法用“查找”命令来做到这一点?

答案1

for d in $(find source -type d); do ls $d/*.bin 1>/dev/null 2>&1 && ln -s $d/*.bin target/$(basename $d).dat;done

慢动作:

  • 扫描目录
  • 如果目录至少包含一个 .bin 文件
  • 使用目录名链接 bin 文件

相关内容