web-dev-qa-db-ja.com

Linux:すべてのファイルをあるディレクトリから別のディレクトリにリンクする

/ mnt/usr/lib /にあるすべてのファイルを/ usr/lib /にリンク(ln -s)したい

たくさんのファイルがありますが、どうすれば高速にできますか? :)

115
KooT
ln -s /mnt/usr/lib/* /usr/lib/

ただし、これはスーパーユーザーのものです。

192
user156676

GNU cpには、コピーする代わりにシンボリックリンクを作成するオプションがあります。

cp -rs /mnt/usr/lib /usr/

これはGNU拡張ではないことに注意してください POSIX cp で。

83
caf

投稿されたソリューションは、隠しファイルをリンクしません。それらを含めるには、これを試してください:

cd /usr/lib
find /mnt/usr/lib -maxdepth 1 -print "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done

再帰的にディレクトリを作成し、ファイルのみをリンクする必要がある場合(したがって、ディレクトリ内にファイルを作成する場合、/usr/libではなく/mnt/usr/libにあります)、これを行うことができます。

cd /usr/lib
find /mnt/usr/lib -mindepth 1 -depth -type d -printf "%P\n" | while read dir; do mkdir -p "$dir"; done
find /mnt/usr/lib -type f -printf "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done
15
Cascabel
ln -s /mnt/usr/lib/* /usr/lib/