2 votos

Cómo pasar patrones de expansión de archivos a través de una conexión ssh/rsync

Soy nuevo en MacOS pero tengo algo de experiencia en Linux. Ahora estoy encontrando algunos problemas con diferentes estilos de líneas de comandos entre MacOS y Linux y espero que alguien me pueda ayudar.

En Linux, si quiero copiar un gran número de archivos, por ejemplo,
apple1.png , apple2.png , ..., apple1000.png , banana1.png , banana2.png , ..., banana1000.png de dir1/ a dir2/ ,

Puedo utilizar el comando de:

Linux: cp dir1/{apple*.png,banana*.png} dir2/

Pero esto no funciona en MacOS, porque no reconoce lo que {apple*.png,banana*.png} medios. En este momento, mi mejor intento en Mac es copiar las manzanas y los plátanos por separado, como

MacOS: cp dir1/'apple*.png' dir2/
MacOS: cp dir1/'banana*.png' dir2/

Así que me gustaría saber si hay un equivalente en MacOS que pueda copiar tanto manzanas como plátanos en un solo comando como el de Linux.


Edita:

Gracias por sus comentarios. Estoy usando zsh en mi macbook. Las líneas de comando sugeridas funcionan bien cuando las pruebo localmente. Pero lo que realmente quiero hacer es rsync desde un servidor remoto.

Siguiendo los comentarios, ls de diferentes maneras dan

jiaqing@macbook % ssh jiaqing@remote_server ls path_to_files/
apple1.png
apple2.png
apple3.png
...
banana1.png
banana2.png
banana3.png
...
orange1.png
orange2.png
orange3.png
...

jiaqing@macbook % ssh jiaqing@remote_server ls path_to_files/apple*
zsh: no matches found: path_to_files/apple*

jiaqing@macbook % ssh jiaqing@remote_server ls path_to_files/'apple*'
path_to_files/apple1.png
path_to_files/apple2.png
path_to_files/apple3.png
...

Con zsh en mi macbook rsync trabaja con rsync -azhP jiaqing@remote_server:path_to_files/'apple*' ./ y también para 'banana*' . Pero no funciona con lo siguiente

jiaqing@macbook % rsync -azhP jiaqing@remote_server:path_to_files/{apple*,banana*} ./
zsh: no matches found: jiaqing@remote_server:path_to_files/apple*

jiaqing@macbook % rsync -azhP jiaqing@remote_server:path_to_files/{'apple*','banana*'} ./
rsync error: syntax or usage error (code 1) at /AppleInternal/Library/BuildRoots/d9889869-120b-11ee-b796-7a03568b17ac/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(1170) [receiver=2.6.9]

3voto

Andy Griffiths Puntos 1

Cualquier cosa que utilice comodines en zsh normalmente se beneficia de tener comillas alrededor para pasar los argumentos sin ser molestado, a menos que la intención sea utilizar zsh en todo su esplendor. Por lo demás, zsh intenta ampliar la lista en lugar de dejar que lo haga la herramienta utilizada. Específicamente para rsync desea que el interlocutor remoto realice la selección de archivos.

Parece que sólo está citando parte del comodín, por lo que las llaves están dejando que el local zsh hacer algo inesperado. p. ej.

jiaqing@remote_server:path_to_files/{'apple*','banana*'}

En su lugar, intente citar el arg completo para pasarlo al remoto, p.ej.

'jiaqing@remote_server:path_to_files/{apple*,banana*}'

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X