什么是cp:在Unix中无法统计错误,我在尝试将东西从一个文件夹复制到另一个文件夹时出现此错误

use*_*516 16 unix bash command-line mv cp

嗨,我想知道为什么我收到此错误.我有这个名为mock的目录,里面有另外3个目录.我试图使用下面的代码将模拟目录中的所有项目复制到projweek目录中.

cp  /mock/* ~/projweek
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误

cp: cannot stat ‘mock/*’: No such file or directory
Run Code Online (Sandbox Code Playgroud)

关于为什么那样的任何想法?

xpu*_*mos 30

对于unix系统来说,glob扩展(也称为“ *”的使用)是由shell完成的,而不是由您正在调用的程序完成的,而且,如果glob不匹配任何内容,而不是扩展为什么都没有,它会扩展到自身并将其传递给程序。因此 cp 命令从字面上看到“/mock/ *”,它不存在,因为你没有名为“ *”的文件。有点反常的是,如果您有一个名为“ *”的文件,它会尽职尽责地复制它而不会抱怨。

  • 你弄乱我的思绪! (3认同)

isa*_*pir 13

如果您的源目录设置在引号中,请确保*不在引号内,即

cp "source/"* dest
Run Code Online (Sandbox Code Playgroud)

要么

cp "source"/* dest
Run Code Online (Sandbox Code Playgroud)

  • 请注意,适用于“*”的情况也适用于“~”。由于某种原因,我可以让 `cp "~/stuff" dest` 工作的唯一方法是 `cp "$HOME/stuff" dest`。 (3认同)
  • 如果您是通过搜索来获取此答案的,则很好,但不完全是OP的情况,因为OP不使用引号。双引号内的星号按字面意义使用,名称中带有星号(\ *)的文件。结束它不存在。 (2认同)
  • 这根本没有回答问题。 (2认同)

Wes*_*Gun 8

cannot stat= 文件/目录不存在。首先检查路径。

而且,您说要复制,/mock但错误消息说mock。先展示真正的代码。

当我在 ubuntu 中测试cp (GNU coreutils) 8.28时,当两个路径都正确时,将一个目录下的所有文件复制到另一个目录没有问题。

root@DESKTOP-9NHNV2I:~# cp /root/temp/* /root
root@DESKTOP-9NHNV2I:~# ls
temp  test.txt  test2.txt  test3333.txt
Run Code Online (Sandbox Code Playgroud)


Caf*_*der 6

cp: cannot stat \xe2\x80\x98mock/*\xe2\x80\x99: No such file or director\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 检查路径上是否存在文件。
  2. \n
  3. 另外,要将文件夹中的所有文件复制到另一个位置,请使用.以下运算符:cp /source/. /dest/
  4. \n
\n


小智 5

cp 在 unix/linux 中用于复制

cp /mock/* ~/projweek 这意味着从 /mock 文件夹中将所有文件复制到位于 root 中的文件夹 projweek

这意味着cp: cannot stat ‘mock/*’: No such file or directory无法从模拟文件夹复制所有文件,因为相关路径上不存在文件或目录

  • 那么我该如何修改呢?mock 和 projweek 都在根@LifeSaver 中 (2认同)