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