假设我有以下目录:
/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 个目录/ dir[n])
我想创建一个到源目录的软链接(我们将新目录称为“目标”),其中包含源目录中的所有目录,但只有 sub1 和 sub3 子目录。
执行此操作的正确语法是什么?例如,
cd target
ln -s /source/**/sub1 .
ln -s /source/**/sub3 .
更新以显示预期输出:
/target/dir1/sub1
/target/dir1/sub3
/target/dir2/sub1
/target/dir2/sub3
...
答案1
假设您正在使用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