2017-10-26 1 views
1

私はその名前で*foo*を含むすべてのファイルのfolder2にソフトリンク(ln -s)を作成したい、との一部またはfolder1のすべてのサブディレクトリで見つけることができます。LINUX:どのようにすべてのサブディレクトリ内の特定のファイルをソフトリンクする

は私がforfind、およびfind -exec ln、およびそれらの組み合わせでそれを試してみたが、あなたがにしている場合は、私が得るすべては*foo*という名前のリンク切れやfolder1

+0

試したコードを貼り付けることはできますか? – skr

+0

本当に[Unix&Linux Stack Exchange](https://unix.stackexchange.com/)にあるはずです。 – Tigger

+0

for i ../[folder1 directory] ​​/ * scn *; ln -s $ iを実行します。完了しました これはフォルダ2にあります – Krotanix

答えて

2

、これを試してみてください。

shopt -s globstar 
cd folder2 
ln -s ../folder1/**/*foo* . 

cdは(これもを見つける利用下記の回答にも適用される)相対リンクのために必要とされています。絶対的なリンクが必要な場合は、

shopt -s globstar 
ln -s /where/is/it/folder1/**/*foo* folder2/ 
+0

それは働いてくれました、ありがとう! – Krotanix

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 
+0

こんにちは、うまくいきません、それは壊れた* foo *という名前のファイル。ファイルがサブ1サブサブディレクトリにあると考えてください。 – Krotanix

0

1ストロークでglobstar

for fileName in `find folder1 -name *foo*` 
do 
    name1=`basename $fileName` 
    ln -sf $fileName folder/$name1 
done 
0

チェックこの

for file in `find . -name *foo* -print` 
do 
    ln -s $file folder2/ 
done 
+0

olivが提供するコードを適用するのと同じ結果になります。機能しません。壊れたファイルfooが作成されます。ファイルがフォルダ1のサブサブサブディレクトリにあると考えてください。 – Krotanix

+0

エラーを貼り付けてください。または実際のo/pと期待されるo/pの例 – skr

関連する問題