带有通配符的mv失败,如果没有文件匹配通配符,则显示“没有这样的文件或目录”

问题描述 投票:0回答:1

我正在运行以下命令:

mv logs/*.log logs/bak/

现在,当我的日志文件夹包含与*.log匹配的文件时,它可以正常工作。

但是,如果没有匹配的文件,它将引发错误

mv: cannot stat 'logs/*.log': No such file or directory

我该如何进行这项工作?

编辑我正在尝试使用零状态代码退出此出口,而不执行任何操作,以便可以在构建过程中使用此出口]

bash mv
1个回答
1
投票

使用find代替mv

例如:

find logs -maxdepth 1 -type f -exec mv '{}' logs/bak  \;

...,并且在尝试使用此命令时,请在命令前加上echo和/或使用详细信息:

find logs -maxdepth 1 -type f -exec echo mv '{}' logs/bak  \;
find logs -maxdepth 1 -type f -exec mv -v '{}' logs/bak  \;

注意选项:

-maxdepth 1:防止递归到子目录中

[-type f:仅考虑常规文件

仅匹配以.log结尾的文件,您可以添加选项:

-name *.log

编辑OP

所以,最后的命令显示为:

find logs -maxdepth 1 -type f -name \*.log -exec mv -v '{}' logs/bak  \;
© www.soinside.com 2019 - 2024. All rights reserved.