如何忽略 mv 中的错误:无法将 'XXXXXX 移动到自身的子目录

yae*_*ael 0 linux bash rhel shell-script mv

在我们的 RHEL 7.6 服务器上,我们创建以下文件夹

# mkdir -p /var/data/data-logs_temp
Run Code Online (Sandbox Code Playgroud)

第二部分是将所有内容移动 /var/data//var/data/data-logs_temp

# mv /var/data/* /var/data/data-logs_temp
Run Code Online (Sandbox Code Playgroud)

但是我们从mv命令中得到的输出是:

mv: cannot move ‘/var/data/data-logs_temp’ to a sub directory of itself, ‘/var/data/data-logs_temp/data-logs_temp’
Run Code Online (Sandbox Code Playgroud)

mv命令是正确的

但; 是否可以mv忽略这一点,因为我们需要mv命令中的退出代码0

或者可能有任何其他选项忽略移动自身的子目录?

Gor*_*son 5

您可以使用 bash 的“扩展 glob”语法从要移动的文件列表中排除 data-logs_temp 子目录:

shopt -s extglob
mv /var/data/!(data-logs_temp) /var/data/data-logs_temp
Run Code Online (Sandbox Code Playgroud)

有关扩展的 glob 的更多信息,请参阅Greg 的 wiki此问题