我的 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
我希望你能理解我的想法并将其应用于你的案例。