![带有 *-wildcard 的 mv 命令显示错误“没有这样的文件或目录”](https://linux22.com/image/1125816/%E5%B8%A6%E6%9C%89%20*-wildcard%20%E7%9A%84%20mv%20%E5%91%BD%E4%BB%A4%E6%98%BE%E7%A4%BA%E9%94%99%E8%AF%AF%E2%80%9C%E6%B2%A1%E6%9C%89%E8%BF%99%E6%A0%B7%E7%9A%84%E6%96%87%E4%BB%B6%E6%88%96%E7%9B%AE%E5%BD%95%E2%80%9D.png)
.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
*.txt
mv
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
你忘了~这表示您的主目录。