디렉토리 구조를 다시 생성하는 동안 선택적 파일 이동 또는 복사

디렉토리 구조를 다시 생성하는 동안 선택적 파일 이동 또는 복사

다음을 수행할 수 있는 명령 또는 명령줄을 찾고 있습니다.파일 목록 가져오기하위 트리(파이프 등을 통해) 및 복사/새로운 목적지로 이동, 하지만소스 디렉터리 구조 다시 만들기.

  1. 타임스탬프, xattrs 및 하드 링크를 포함한 모든 관련 파일 속성을 보존해야 합니다.
  2. 새로 재생성된 디렉토리는 타임스탬프(사용 touch등)도 "보존"해야 합니다.

내 특정 시나리오에서는 을 사용하여 fdupes두 소스 트리 와 a사이의 중복 항목을 찾은 다음 디렉터리 구조를 유지하면서 b트리의 중복 항목을 다른 곳으로 이동하려고 합니다 . 그러나 단순화를 위해 의 출력은 내가 사용하려는 입력을 생성합니다. ("rsync 사용"은 제가 사용할 수 있는 솔루션이 아니라는 점만 이해해 주세요.)a
find . -type f

약간 더 복잡한 루프를 작성해야 할 것 같지만 find | xargs / while read line제가 놓친 멋진 도구가 있고 누군가 사용할 수 있는 더 나은 솔루션이 있거나 rename이와 유사한(또는 이미 공유할 수 있는 스크립트가 있는) 경우가 있을까요?

고마워하는!

입력 예:

cat <<THEEND | <program-or-script> /target/directory/
./subtree/with/a/file
./subtree/with/some/other/file
./subtree/with/even/more/files
THEEND

원하는 결과:

$ find /target/directory/ -type f
/target/directory/subtree/with/a/file
/target/directory/subtree/with/some/other/file
/target/directory/subtree/with/even/more/files

그래야 한다아니요./subtree/with/an/ignored/file소스 트리에서 가설을 복사하거나 이동합니다.
(또한 소스 트리에 남아 있는 빈 디렉터리를 정리할 필요가 없습니다.)

관련 정보