Symlink

創建包含某些子目錄的符號連結

  • May 15, 2020

假設我有以下目錄:

/source/dir1/sub1
/source/dir1/sub2
/source/dir1/sub3
/source/dir1/sub4

/source/dir2/sub1
/source/dir2/sub2
/source/dir2/sub3
/source/dir2/sub4

…(假設我還有 100 個目錄/目錄

$$ n $$) 我想創建一個指向源目錄的軟連結(讓我們稱之為新目錄’target’),其中包含源目錄中的所有目錄,但只有 sub1 和 sub3 子目錄。

執行此操作的正確語法是什麼?例如,

cd target
ln -s /source/**/sub1 .
ln -s /source/**/sub3 .

更新以顯示預期的輸出:

   /target/dir1/sub1
   /target/dir1/sub3

   /target/dir2/sub1
   /target/dir2/sub3
...

假設您正在使用bash,您可以使用此循環:

cd target
for dir in /source/*/sub{1,3}; do
 parentdir=${dir%/*}        # remove last directory, e.g. `/sub1`
 parentdir=${parentdir##*/} # leave the directory name, e.g. `dir1`
 mkdir -p "$parentdir"
 ln -s "$dir" -t "$parentdir"
done

如果源目錄的路徑應該是相對路徑,則添加-r選項。ln

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