shell 脚本 mv 抛出无用的错误 "No such file or directory" 即使我看到了

shell script mv is throwing unhelpful error "No such file or directory" even though i see it

我需要使用 shell 脚本将一个目录中的所有文件移动到另一个目录中。我手动执行此操作没有问题,现在编写脚本时 mv 命令出现错误。

在我要将文件移出的目录中有 2 个目录,php 和 php.tmp。我得到的错误是 cd: /path/to/working/directory/php: No such file or directory。我很困惑,因为当我 ls 工作目录时,它就在那里开始并列出。

我得到的错误在这里:

ls $PWD #ensure the files are there
mv $PWD/* /company/home/directory
ls /company/home/directory #ensure the files are moved

当我使用 ls $PWD 时,我看到了我想要移动的目录,但之后的错误提示它不存在。然后,当我通过 ssh 连接到机器时,这是 运行 我看到文件已正确移动。

如果这很重要,我从中移动文件的目录属于不同的用户,但 shell 正在以根用户身份执行。

我不明白为什么会出现此错误,所以,任何帮助都将非常有用。

你的变量引用正确吗?你可以试试 :

ls "$PWD" #ensure the files are there
mv "$PWD"/* "/company/home/directory"
ls "/company/home/directory" #ensure the files are moved

如果您的任何文件或目录名称包含空格或制表符等字符,您的 "mv" 命令可能没有看到您认为它看到的参数列表。

路径后加/指定要移动的文件,而不是重命名目录。

你应该试试这个:

mv $PWD/\*  /home/user/directory/