gpt4 book ai didi

Bash脚本根据文件大小更改 move 文件夹?

转载 作者:行者123 更新时间:2023-12-04 19:25:22 28 4
gpt4 key购买 nike

我在专有的 linux 发行版中有一些自动下载。
他们去临时暂存盘。我想在它们完成后将它们 move 到主 RAID 阵列。我能看到的最好方法是检查磁盘上的文件夹,看看内容是否在最后一分钟发生了变化。如果没有,那么它可能已完成下载然后 move 它。

假设这个位置可能有数百个文件夹或只有一个文件夹,并且它们都在同一个地方。写这个的最好方法是什么?

我可以得到一个文件夹大小列表

du -h directory/name

这些文件夹可以包含从 1.5mb 到 10GB 的多个文件
Temp Loc:  /volume2/4TBScratch/Processing
Dest Loc when complete: /volume1/S/00 Landing

编辑:
使用这个:
find  /volume2/4TBScratch/Processing -mindepth 1 -type d -not -mmin +10 -exec mv "{}"  "/volume1/S/00 Landing" \;
find: `/volume2/4TBScratch/Processing/test': No such file or directory
4.3#

但它确实复制了相关文件夹和所有文件。但是这个错误让我担心将来可能会出错......是因为有多个文件并且它对根文件夹中的每个文件或文件夹运行相同的 move 命令吗?但是由于它在第一次迭代中 move 了所有内容,所以在下一次迭代中找不到它?

EDIT2:
使用 Rsync
4.3# find  /volume2/4TBScratch/Processing -mindepth 1 -type d -not -mmin +10 -exec rsync --remove-source-files "{}" "/volume1/S/00 Landing" \;
skipping directory newtest
skipping directory erw

已解决:EDIT3
在下面的评论中的帮助下解决了。最终脚本如下所示:
find  /volume2/4TBScratch/Processing -mindepth 1 -type d -not -mmin +10 -exec rsync -a --remove-source-files "{}" "/volume1/S/00 Landing" \;
find /volume2/4TBScratch/Processing -depth -type d -empty -delete

rsync move 文件夹和文件,但留下空的根目录
下一个命令查找空文件夹并将其删除。

谢谢大家!

最佳答案

您可以使用 GNU find带选项-size用于检测特定大小的文件/文件夹并使用 mv-exec move 到目标目录的选项。语法是

find /volume2/4TBScratch/Processing -type d -maxdepth 1 -size -10G -exec mv "{}"  "/volume1/S/00 Landing" \;

使用 rsync
find /volume2/4TBScratch/Processing -type d -maxdepth 1 -size -10G -exec rsync --remove-source-files "{}" "/volume1/S/00 Landing" \;

带有 - 的大小符号表示小于提到的大小,在这种情况下是 10GB .关于使用的每个标志的注释
  • -type d -> 仅用于识别源路径中的文件夹。
  • -maxdepth 1 -> 仅查看当前源目录而不查看
    是递归的。
  • -exec -> 执行下面的命令。

  • 或者,如果您想查找在特定时间(分钟)内最后修改的文件, find-mmin 的选项可以设置为一个值。例如。 -mmin -5将返回五分钟前修改的文件。

    所以建议将它添加到您的要求中,对于 x根据需要查看目录是否列出,然后您可以添加 -exec move 目录的选项
    find /volume2/4TBScratch/Processing -type d -maxdepth 1 -mmin -2 -size -10G

    请参阅 GNU 文档了解 finding files according to size。关于这是如何工作的。

    注意:- 添加双引号( "" )以避免 Bash 拆分包含空格的名称。

    关于Bash脚本根据文件大小更改 move 文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71687416/

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