文件存在但 mv 错误:“mv:无法统计‘file.tar.gz’:没有这样的文件或目录”

Nik*_*Nak 2 shell mv

我正在 Centos 7 中创建一个脚本以将目录中的最新文件移动到另一个目录。我从中复制的原始目录包含一个有效文件,但是当我尝试移动或复制该文件时,它出错说该文件不存在。我知道该文件确实存在,正如我在下面证明的那样。为什么它会失败,我可以做些什么来修复它?

如果我从 shell 中的脚本运行这一行,$(则会按预期将输出扩展到变量中:

NEW=$(ls -Art /home/user/directory/ | tail -1)
Run Code Online (Sandbox Code Playgroud)

我可以向自己证明这一点正在响应变量的值,如下所示:
echo $NEW

file.tar.gz
Run Code Online (Sandbox Code Playgroud)

然后我尝试将文件移动到不同的目录:

mv $NEW /usr/local/directory/
Run Code Online (Sandbox Code Playgroud)

..这就是我得到错误的地方。请注意,错误消息明确命名了它找不到的文件:

mv: 不能 stat 'file.tar.gz': 没有那个文件或目录

shell 似乎告诉我它找不到文件,然后命名它找不到的文件。

我试过用括号替换反引号,但结果相同。我已经尝试将文件和它上面的目录的权限更改为我能想到的几乎所有排列,并将所有权更改为 user.user

我试过以 root 和用户身份运行命令,每次都得到相同的结果。我将感谢任何帮助解决此问题的尝试。

Arc*_*mar 7

看起来您不在文件所在的目录中。

你用

 ls -Art /home/user/directory/    
Run Code Online (Sandbox Code Playgroud)

它只返回文件名部分,而不是目录部分。

你的移动命令应该是

mv "/home/user/directory/$NEW"  /usr/local/directory/
Run Code Online (Sandbox Code Playgroud)