我想在其名称中包含ln -s
的所有文件中创建软链接(folder2
)到*foo*
,并且可以在{{的部分或全部子目录中找到1}}。
我已经使用folder1
,for
和find
以及它们的组合进行了尝试,但我得到的是一个名为find -exec ln
的断开链接或指向*foo*
答案 0 :(得分:2)
一举 globstar 。
shopt -s globstar
cd folder2
ln -s ../folder1/**/*foo* .
相对链接需要 cd
(这适用于以下使用查找的答案)。如果您想要绝对链接,请执行
shopt -s globstar
ln -s /where/is/it/folder1/**/*foo* folder2/
答案 1 :(得分:0)
如果您在目标文件夹中想要创建符号链接,请使用ln -s <target file>
。 sym链接名称将与目标文件相同。
如果您需要为多个文件执行此操作,请使用for
循环。
示例:
$ mkdir folder1 folder2
$ cd folder1
$ touch foo foobar foofoobar foobarfoo bar barfoo barbar
$ ls
bar barbar barfoo foo foobar foobarfoo foofoobar
$ cd ../folder2
$ for i in ../folder1/*foo*; do ln -s $i; done
$ ls -l
total 0
lrwxrwxrwx 1 abc abc 17 oct. 26 11:57 barfoo -> ../folder1/barfoo
lrwxrwxrwx 1 abc abc 14 oct. 26 11:57 foo -> ../folder1/foo
lrwxrwxrwx 1 abc abc 17 oct. 26 11:57 foobar -> ../folder1/foobar
lrwxrwxrwx 1 abc abc 20 oct. 26 11:57 foobarfoo -> ../folder1/foobarfoo
lrwxrwxrwx 1 abc abc 20 oct. 26 11:57 foofoobar -> ../folder1/foofoobar
答案 2 :(得分:0)
试试这个,
for fileName in `find folder1 -name *foo*`
do
name1=`basename $fileName`
ln -sf $fileName folder/$name1
done
答案 3 :(得分:0)
检查
for file in `find . -name *foo* -print`
do
ln -s $file folder2/
done