如何使用带有递归和文件掩码的 scp 来实现多个扩展名?

如何使用带有递归和文件掩码的 scp 来实现多个扩展名?

我正在尝试递归下载一个目录,但仅下载具有某些扩展名的文件,同时还维护目录结构。

我现在使用的命令是 scp -rp user@address:"/path/to/directory/foo/*\.{jpg,mp4}" ~/local/directory/foo/.其中a)要求我在本地创建目录foo,b)它只下载根目录中的文件(递归不起作用)。

我之前使用的命令是scp -rp user@address:"/path/to/directory/foo" ~/local/directory/,它没有这些问题,但也下载了我不需要的所有文件。

答案1

我不认为这可以通过 实现scp。您可以递归复制所有文件,也可以非递归复制选定的文件类型。请注意,您不需要转义.

但你可以使用rsync

rsync -avm --include='*/' --include='*.jpg' --include='*.mp4' --exclude='*'\
  user@address:/path/to/directory/foo ~/local/directory/

使用的选项:

  • -a存档模式
  • -v增加冗长
  • -m修剪空目录
  • --include='*/'包括子目录
  • --include='*.jpg'包含*.jpg文件
  • --include='*.mp4'包含*.mp4文件
  • --exclude='*'排除其他文件类型

相关内容