gpt4 book ai didi

linux - 在 Bash 中异步复制然后移动文件

转载 作者:太空狗 更新时间:2023-10-29 11:31:53 26 4
gpt4 key购买 nike

在 Linux 系统上,我想遍历内存棒上的一堆文件,将文件复制到硬盘驱动器,然后将内存棒上的文件移动到同一内存棒中的另一个目录。

我想异步执行它,这样我就可以同时执行很多操作,但我需要知道每个操作何时完成,以便我可以移动它们。

同步运行良好(假设所有内存棒都已安装):

for FILE in /home/drive_*;
do

cp $FILE $DESTINATION
mv $FILE "otherDir/"$FILE

done

所以这很好,它一次处理一个文件,如果文件很大,则需要相当长的时间。我怎样才能异步执行此操作?

我知道我可以在复制文件时添加 & (cp $FILE $DESTINATION &) 但我怎么知道它何时完成以便我可以移动它?

最佳答案

需要明确的是,您希望复制然后 移动,以便这些任务是同步的。在执行这些任务的同时,您想继续执行其他任务(更多复制然后移动)。

我相信以下是您所寻求的:

for FILE in /home/drive_*
do
(cp $FILE $DESTINATION && mv $FILE "otherDir/"$FILE &)
done

您可以看到 cpmv 是连续的,但执行仍在继续。

我应该指出,我怀疑您是否会通过使用它看到任何性能改进,它实际上可能会变得更糟。磁盘读写比较慢,磁盘可能无法同时读写多个文件。我建议只坚持使用顺序脚本。

关于linux - 在 Bash 中异步复制然后移动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33418121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com