Допустим, у меня есть следующая структура:
root
|
\
dir1
|
| \
| libfoo.so.4.2
| libfoo.so.4 -> libfoo.so.4.2
| libfoo.so -> libfoo.so.4
JunkThatShouldntBeCopied
dir2
Я хотел бы скопировать libfoo.so
и использовать его также libfoo.so.4
и libfoo.so.4.2
в root/dir2
.
- Я не могу скопировать весь каталог, содержащий их, так как в нем содержится много других файлов, которые мне не нужны.
- Я также не знаю точных названий файлов,
libfoo.so
на которые они указывают.
Как мне это сделать?
решение1
Я могу придумать что-то вроде этого:
trace() {
arr+=("$1")
local next="$(readlink "$1")"
if [ -n "$next" ]; then
trace "$next"
fi
}
$ cd /tmp/a/
$ unset arr; trace 3
$ rsync -vl "${arr[@]}" /tmp/b/
created directory /tmp/b
1
2 -> 1
3 -> 2
sent 125 bytes received 70 bytes 390.00 bytes/sec
total size is 2 speedup is 0.01
$
решение2
cp -Pp /root/dir1/libfoo.so* /root/dir2/