带有 *-wildcard 的 mv 命令显示错误“没有这样的文件或目录”

带有 *-wildcard 的 mv 命令显示错误“没有这样的文件或目录”

.txt我尝试使用终端移动桌面上的6 个文件。但是,当我尝试将它们全部批量移动到texts桌面上的文件夹中时,出现以下错误:

mv: cannot stat ‘Desktop/*.txt’: No such file or directory

以下是我执行该任务时执行的代码:

mv Desktop/*.txt Desktop/texts

我究竟做错了什么?


我目前在~/home/dlundy1


以下是ls -al ~/Desktop/*.txt

ls: cannot access /home/ubuntu/Desktop/*.txt: No such file or directory

** 注意:** 我想掌握仅使用终端执行基本任务的方法,以便将解决方案限制为不使用 GUI 的解决方案。

答案1

您是否先创建了目录?如果没有,

mkdir Desktop/texts

使用 -p 选项创建缺少的中间目录。

mkdir -p Desktop/texts/DoesNotExist/NotHere/Yet

您还没有提到您当前处于什么路径,默认情况下终端会话从您自己的主目录启动,但要确保您可以使用完整路径或来~指示您的主目录。~扩展以填写主目录的其余路径。

确认目的地存在后,

mv ~/Desktop/*.txt ~/Desktop/texts

由于 ~,它与使用相同,

mv /home/dlundy1/Desktop/*.txt /home/dlundy1/Desktop/texts

答案2

.txt当目录中存在名称以 结尾的文件时~/Desktop, shell 将在执行命令之前用与 glob 模式匹配的文件列表bash替换:~/Desktop/*.txt*.txtmv

mv ~/Desktop/*.txt ~/Desktop/texts

将改为

mv ~/Desktop/first.txt ~/Desktop/second.txt ~/Desktop/texts

例如,如果~/Desktop包含first.txt和。second.txt

但是,如果没有*.txt与 中的glob 模式匹配的文件~/Desktop,则 shell 无法替换它。根据 shell 选项,它要么拒绝运行该命令,显示错误,要么不更改命令,而是按原样运行。在您的例子中,它执行了第二个:因此尝试将目录中mv具有名称的文件移动- 但结果发现没有这样的文件。 错误意味着它找不到任何具有该名称的文件。*.txt~/Desktop
cannon stat

因此问题似乎是您想要移动的文件不存在于该目录中。也许您已经移动了它们?

答案3

你应该写以下内容

mv ~/Desktop/*.txt ~/Desktop/texts

你忘了~这表示您的主目录。

相关内容