如何在 Mac 上排队复制多个文件?

Keb*_*man 16 bash file-transfer perl macos

当我在 Mac 上复制多个文件时,系统会尝试同时复制所有文件。问题是双重的。

首先,当您选择多个文件并复制它们时,它们都进入一个进程,采用“全有或全无”的方法,这与数据库中的 ACID 不同。这通常是不可取的。

此外,当您添加其他复制进程时,系统会尝试同时复制所有内容。

例如,我决定复制一个大文件A,然后我决定也复制一个大文件B。这导致两个并行复制操作,无论“大文件”之一是否也是许多文件的选择。

我不喜欢这个有几个原因:

  • 当多个复制进程同时运行时,它似乎会使其他进程陷入困境。
  • 此外,当同时复制多个文件时,复制过程本身似乎要慢得多。
  • 最后,如果进程中止,则没有文件到达目的地。
  • 将文件添加到队列时,它也会立即开始复制,并进一步拖慢进程。
  • 当复制到(本地)网络上的其他机器或驱动器时,这是一个真正的问题。

结果:A我想首先传输和使用的文件到达所需的时间比需要的要长得多,并且当从 LAN 上的中央 HD 复制时,我无法使用第一个文件,直到所有其他文件也都到达为止。

因此...如何在 Mac 上排队复制多个文件?澄清一下:无论选择了很多文件,还是一一添加,我都希望它们都放入一个一次只复制一个文件的队列中,直到队列完成。

也欢迎使用 Bash,尤其是 Perl 来回答!

slh*_*hck 9

超复印机

UltraCopier是一个免费的跨平台复制实用程序,目前正在开发中,所以它还不是那么整洁和优美。一旦你安装它,它就会出现在你的菜单栏中。

它管理一个复制列表,允许您将复制移动作业排入队列,然后依次处理。您还可以定义复制进程优先级以及传输的块大小。

使用新版本,您可以使用相似的源和/或目标进行分组,或者始终或从不进行分组。

在此处输入图片说明


Wuf*_*ers 5

这是一个bash解决方案:

cp file1 dest1; cp file2 dest2
Run Code Online (Sandbox Code Playgroud)

对要复制的文件数量重复此操作。只需继续添加分号和cp命令即可。

你也可以这样做

cp file1 dest1 && cp file2 dest2
Run Code Online (Sandbox Code Playgroud)

在本例中,只有在复制成功之前的文件才会被复制。

对于文件夹,您可以执行以下操作:

for x in folder/*; do echo "Copying $x"; cp "$x" destdir; done
Run Code Online (Sandbox Code Playgroud)

  • 使用`for` 方法注意带有空格和通配符的文件。为了安全起见,我可能会使用管道传输到 `xargs -0` 的 `find -print0` 来实现。 (2认同)