다음과 같은 구조가 있다고 가정해 보겠습니다.
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/