LINUX: связать все файлы из одного каталога в другой

Я хочу связать (ln -s) все файлы, которые находятся в/mnt/usr/lib/в/usr/lib/

Есть много файлов, как это сделать быстро?:)

Ответ 1

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

Я думаю, это принадлежит суперпользователю.

Ответ 2

GNU cp имеет возможность создавать символические ссылки вместо копирования.

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

Обратите внимание, что это расширение GNU не найдено в POSIX cp.

Ответ 3

Опубликованные решения не свяжут скрытые файлы. Чтобы включить их, попробуйте следующее:

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 not /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

Ответ 4

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