
[@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 find
para generar una lista de archivos para copiar, pasarla grep
para filtrarla y canalizar el resultado para cpio
copiar 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.