여러 파일 또는 디렉터리를 제외하고 파일 또는 디렉터리 복사

여러 파일 또는 디렉터리를 제외하고 파일 또는 디렉터리 복사
[@ysx-dlfwq-2 555]$ tree
.
├── 666
├── 777
│   └── 71.sh
├── 888
│   └── 8881
├── test2.sh
├── test.sh
└── test.txt

4 directories, 4 files

After executing the command
find /opt/share/555/ -mindepth 1 -type d \( -path /opt/share/555/666 -o -path /opt/share/555/888/8881 \) -o -type f \( -path /opt/share/555/test.txt \) -prune -o -exec cp -prf {} /opt/share/2/ \;

[@ysx-dlfwq-2 2]# tree
.
├── 71.sh           <<<----Files that should not appear
├── 777
│   └── 71.sh
├── 888
│   └── 8881        <<<----Directory that should not appear
├── test2.sh
└── test.sh

3 directories, 4 files

우리 환경에서는 내장된 시스템 명령만 사용할 수 있으며 rsync는 고려 대상에 포함되지 않습니다. 현재 알고 있는 정규식을 지원하는 명령이 없다면 전문가의 도움을 받을 수 있습니까?

답변1

당신이 무엇을 성취하려고 하는지는 조금 불분명하지만...

find복사할 파일 목록을 생성하고, 이를 통과하여 grep필터링하고, 결과를 파이프하여 cpio실제로 파일을 복사하는 데 사용할 수 있습니다 .

find /opt/share/555/ -type f |
  grep -v 'whatever' |
  cpio -pd /opt/share/2

이를 통해 정규식을 사용하여 복사할 항목과 복사하지 않을 항목을 제어할 수 있습니다.

관련 정보