如何使用 Mac 终端复制多个文件并将其移动到多个文件夹

如何使用 Mac 终端复制多个文件并将其移动到多个文件夹

我的 Mac 桌面上有一个名为 的文件夹,Bthepics里面有 9 张图片,我想一次性复制并移动到大约 500 个文件夹中。这 500 个文件夹位于我的 Mac 桌面上名为 的文件夹中bigcities。我不想手动选择所有 9 张图片,然后将每组 9 张图片分别拖到所有 500 个文件夹中。

有人能告诉我如何使用 Mac 的终端或者自动机程式?

答案1

这会循环遍历 中的每个文件夹bigcities,并将所有图像复制到Bthepics该文件夹​​中。在终端中运行此命令,看看它是否输出您想要的内容。您只需复制粘贴此代码块即可。

find ~/Desktop/bigcities -type d -maxdepth 1 -print0 | while IFS= read -r -d '' folder; do
  echo cp ~/Desktop/Bthepics/*.jpg "$folder"
done

要进行实际复制,请echo在粘贴之前删除。我假设您的源图像具有扩展名.jpg

然后只需手动删除原始图像即可。

答案2

这是一个更简单的代码,不需要运行外部命令(find)并通过管道传输输出。其余部分与 slhck 的回复相同。

cd ~/Desktop/bigcities ; for folder in */ ; do
  echo cp ~/Desktop/Bthepics/*.jpg "$folder"
done

此代码有一个缺点:目标文件夹列表不得超过约 260 000 个字符(Mac OS X 10.5 上的命令行大小限制)。对于 500 个文件夹,每个文件夹名称大约有 500 个字符。

答案3

您应该熟悉用于自动化任务的 xargs 命令,如下所示:

find ~/Desktop/bigcities -type d -print0 | xargs -I% cp ~/Desktop/Bthepics/image[1-9].jpg %/

也就是说,如果您的 9 张图片名为 image1.jpg image2.jpg...
如果您的 9 张图片的名称不同:

find ~/Desktop/bigcities -type d -print0 | xargs -I% cp ~/Desktop/Bthepics/file1.jpg ~/Desktop/Bthepics/file2.jpg ... ~/Desktop/Bthepics/file9.jpg %/

xargs 末尾的命令与你手动用 % 执行的命令相同,将被文件夹路径替换

顺便说一句,此命令会将图像复制到父文件夹(~/Desktop/bigcities),因此您需要通过 1 个命令将其删除:

rm ~/Desktop/bigcities/image[1-9].jpg

我希望你能理解我的想法并将其应用于你的案例。

相关内容