あるディレクトリ内の各ファイルを別のディレクトリにシンボリックリンクするにはどうすればよいですか?


15

私は、ディレクトリがある場合は/fooその中のいくつかのファイルとを、どのように私は内の各エントリをシンボリックリンクか/foo/bar/

たとえば/foo、ファイルabおよびがある場合、c3つのシンボリックリンクを作成します。

  • /bar/a -> /foo/a
  • /bar/b -> /foo/b
  • /bar/c -> /foo/c

barをfooにシンボリックリンクしたくないだけですか?
リッチブラッドショー

これの実際のアプリケーションは、プログラムをインストールし、その実行可能ファイルをパスに追加するのではなく、$ PATHの標準フォルダーに移動することです。
スティーブン

それだけでそれを設定するには良いアイデアだろうように思えます--prefix=
Hello71

回答:


18

オプションで(GNU)cpを使用でき--symbolic-linkます:

prompt$ mkdir foo
prompt$ cd foo
prompt$ touch a b c
prompt$ mkdir ../bar
prompt$ cd ../bar
prompt$ cp --symbolic-link ../foo/* .
prompt$ ls -l
total 0
lrwxrwxrwx. 1 hlovdal hlovdal 8 Jun 12 16:24 a -> ../foo/a
lrwxrwxrwx. 1 hlovdal hlovdal 8 Jun 12 16:24 b -> ../foo/b
lrwxrwxrwx. 1 hlovdal hlovdal 8 Jun 12 16:24 c -> ../foo/c
prompt$

これがまさに解決策のようです。驚くばかり!
スティーブン

これは非常に完璧です。
noraj

これをディレクトリにも適用する方法はありますか?これを実行すると、「cp:省略ディレクトリ './baz'」という警告が表示されます
solidau

15

これを試してみてください:

ln -s /foo/* /bar

質問で指定されているソースディレクトリは/fooです。完全に指定する必要があることに注意してください(つまり、ルートディレクトリから開始する)。他の例は次のようになります。

ln -s /some/dir/with/baz/* destdir
ln -s /dir/to/link/from/* /dir/to/link/to
ln -s $PWD/stuff/* more/stuff

これでも機能しますか?
ctrlc-root

@ root.ctrlc:ソースのフルパスを指定する必要があります(/元の回答にあります)。説明を追加します。
追って通知があるまで一時停止します。

1つのコマンドのみですべてをシンボリックリンクとしてコピーする場合は、@ hlovdal answerなどのcp -sを使用する必要があります。コンピューター上のサブフォルダーファイルを複製した人cp -rs /var/www/folder/ .ではなく、すべてのサブフォルダーファイルをシンボリックリンクとしてコピーしln -s /var/www/folder/ .ます。
baptx

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.