Bash

將一個目錄中的所有子目錄符號連結到另一個目錄

  • May 24, 2020

我正在嘗試將文件夾中的每個目錄符號連結到另一個文件夾。例如,在下面的結構中,我需要符號連結到文件夾 2 的子文件夾。

- /home/chris/folder1
-- subfolder1
-- subfolder2

- /home/john/folder2
-- subfolder1
-- subfolder2

到目前為止,這是我嘗試過的,但是我的 bash 技能生疏了,這不起作用。

find /home/chris/folder1 -type d -maxdepth 1 -mindepth 1 -exec ln -s {} /home/john/folder2/{} \;

假設這種佈局:

% tree -L 2
.
├── top-1
└── top-2
   ├── sub-1
   ├── sub-2
   └── sub-3

而這個期望的輸出:

% tree -L 2
.
├── top-1
│   ├── sub-1 -> /tmp/sf-582772/top-2/sub-1
│   ├── sub-2 -> /tmp/sf-582772/top-2/sub-2
│   └── sub-3 -> /tmp/sf-582772/top-2/sub-3
└── top-2
   ├── sub-1
   ├── sub-2
   └── sub-3

而這個版本find

% find --version
find (GNU findutils) 4.4.2

採用:

find /tmp/sf-582772/top-2/ -maxdepth 1 -mindepth 1 -type d -exec ln -s '{}' /tmp/sf-582772/top-1/ \;

將此處給出的完整路徑替換為您需要的目錄。這是一個帶有相對路徑的版本:

% pwd
/tmp/sf-582772
% find top-2 -maxdepth 1 -mindepth 1 -type d -exec ln -s ../'{}' top-1/ \;

給出:

% tree -L 2
.
├── top-1
│   ├── sub-1 -> ../top-2/sub-1
│   ├── sub-2 -> ../top-2/sub-2
│   └── sub-3 -> ../top-2/sub-3
└── top-2
   ├── sub-1
   ├── sub-2
   └── sub-3

引用自:https://unix.stackexchange.com/questions/120726