Copie archivos o directorios excluyendo varios archivos o directorios

Copie archivos o directorios excluyendo varios archivos o directorios
[@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

Nuestro entorno solo permite el uso de comandos integrados del sistema y rsync no se considera. Si no hay comandos que admitan expresiones regulares que yo sepa actualmente, ¿podrían los expertos echarme una mano?

Respuesta1

No tengo claro lo que intentas lograr, pero...

Puede usarlo findpara generar una lista de archivos para copiar, pasarla greppara filtrarla y canalizar el resultado para cpiocopiar los archivos:

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

Esto le permite utilizar expresiones regulares para controlar qué se copia o no.

información relacionada