gpt4 book ai didi

linux - 在文件夹之间移动文件不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:15 25 4
gpt4 key购买 nike

我正在尝试使用脚本将超过一百万个文件从一个文件夹移动到另一个文件夹,但我没有得到任何结果,即没有文件移动并且我没有收到任何错误,脚本检查它们是否超过一个文件夹中的 20 条记录并将它们移动到另一个指定的文件夹中,这是我的脚本。

#!/bin/bash

cd "/home/admin/Lulu/Bo/"

check="ls | wc -l"
if [ $(check) -gt 1 ]
then
find ./ -name " oAS1_201613*.tar.gz"|grep -v bak| xargs -t -I {} mv {} /RS/2011/
fi

关于如何做到这一点有什么建议吗?

最佳答案

找不到文件的一个可能原因可能是您指定的文件名不正确。您的文件真的空格字符开头吗?

您是否有理由费心去清点元素?是否存在符合您的find 条件的文件意味着$(check) -gt 1?如果是这样,您可以取消检查——如果 find 没有发现匹配的文件,它将不执行任何操作。

#!/bin/bash

src="/home/admin/Lulu/Bo/"

find "$src/" \
-type f
-name "oAS1_201613*.tar.gz" \
-not -name "*bak*" \
-print0 |
xargs -0 -t -I {} mv "{}" /RS/2011/

请注意 -print0xargs -0,它们允许您处理名称中包含空格的文件。

请注意,您还可以运行 mv 作为 find 的选项。代替 -print0,你可以使用这个:

find "$src/" ... -exec mv -v "{}" /RS/2011/ \;

如果您真的想模拟 xargs -t 的功能,您可以通过多个 -exec 命令来实现。

使用 xargs 的好处之一有时是 -P 选项,它允许您并行运行。乍一看,移动一百万个文件似乎是一项“大”工作,但很可能无论如何你都会受 IO 限制,所以并行运行你的 mv 可能不是很有帮助,在在哪种情况下 find .. -exec 可能与 xargs 的管道一样高效。

关于linux - 在文件夹之间移动文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47634043/

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