【问题标题】:OS X cp command in Terminal - No such file or directory终端中的 OS X cp 命令 - 没有这样的文件或目录
【发布时间】:2013-09-30 07:02:16
【问题描述】:

这可能是我的大脑无法正常工作的日子之一,或者我非常愚蠢。我一直在尝试复制文件(实际上是目录 .app、.bundle 等),但始终收到错误消息“没有这样的文件或目录”。我已经尝试了不使用 / 斜线、使用文件名、不使用文件名的所有可能组合。帮助! :/

原目录:~/desktop/directory/file.bundle

目标目录:/library/application\ support/directory

换句话说,file.bundle 需要进入那个 ^ 目录

试过了:

# cp $HOME/Desktop/directory/file.bundle /library/application\ support/directory
cp: /Users/airhead/Desktop/directory/file.bundle: No such file or directory

# cp -rf ~/desktop/directory/file.bundle /library/application\ support/directory/ 
cp: /Users/airhead/Desktop//directory/file.bundle: No such file or directory

# cd ~/

# cp -r directory/file.bundle /library/application\ support/directory/file.bundle
cp: /Users/airhead/Desktop/directory/file.bundle: No such file or directory

# cp -Rf $HOME"/directory/file.bundle" "/library/application\ support/directory/"
cp: directory /Library/Application\ Support/directory/ does not exist

附加信息:

# ls -la $HOME/Desktop/directory/
ls: /Users/airhead/Desktop/directory/: No such file or directory

【问题讨论】:

  • 为了涵盖显而易见的要点:您的文件系统是否不区分大小写?您是否忘记了 cp 的目标参数(例如 cp "$HOME/Desktop/directory/file.bundle" "/library/application support/directory"
  • 对不起,我应该指定 - 不区分大小写,最后是目标路径。我会更新这个问题。它需要用引号引起来吗?也许这就是问题o_O
  • 你能给我们ls -la $HOME/Desktop/directory/的输出吗?只是为了确保该文件确实存在。
  • 如果是 OSX,默认文件系统 (HFS) 区分大小写。
  • @MaxLeske - 嗨,Max,输出在问题的上方。在查找器中,如果我获得有关文件的信息,我会得到“/Users/airhead/Desktop/”文件名:目录

标签: macos terminal cp


【解决方案1】:

我知道这个问题已经得到解答,但另一种选择是在 Finder 中打开目标和源文件夹,然后将它们拖放到终端中。路径将被自动复制并正确格式化(因此无需实际找出正确的文件名/扩展名)。

我必须在 Mac 和 Windows 机器之间进行网络复制,有时在文件树的深处,我发现这是最有效的方法。

所以,举个例子:

cp -r [从查找器拖放源文件夹] [从查找器拖放目标文件夹]

【讨论】:

  • 谢谢!当您只想将cd 放入新目录并且终端由于某种原因无法识别它时,拖放也可以工作。我刚刚做了cd {dragged folder into Terminal},它打印了完整的路径名,然后可以更改为该目录。
  • 很高兴知道!你真的激起了我的好奇心,所以我决定检查一下,结果发现拖放功能似乎也适用于 Windows 8 和 Ubuntu 14.02 终端。
  • 你也是对的,尼古拉斯。根据 OS X 的手册页,“cp 实用程序的历史版本有一个 -r 选项。此实现支持该选项;但是,强烈建议不要使用它,因为它不能正确复制特殊文件、符号链接或 fifo 的。”因此,如果有人出现并开始看到复制问题,请确保您使用的是 -R。
  • 这对我不起作用,有什么解决办法吗?
  • 有趣。您使用的是哪个版本的 OS X?
【解决方案2】:

解决方案总结:

directory 既不是现有文件也不是目录。事实证明,ls -la $HOME/Desktop/ 透露的真实姓名是directory.1

完整的工作命令是

cp -R $HOME/directory.1/file.bundle /library/application\ support/directory/

使用-R 参数进行递归复制(复制目录时必须)。

【讨论】:

  • 谢谢,它有助于了解 .1 何时位于充当扩展名的目录末尾,默认情况下,查找器隐藏 :)
  • 我的荣幸:)。 .1 通常由 Finder 添加,用于区分名称相同的文件或目录,因此在您进行复制时可能会发生这种情况。我的猜测是:您曾经有一个名为directory 的目录,然后制作了一个副本(名为directory.1),然后(不知何故)删除了directory。 Finder 可能显示了不同的字符串,因为它缓存了信息。
【解决方案3】:

在 OS X Sierra 10.12 上,上述方法均无效。 cd 然后拖放不起作用。 没有间距或其他修复工作。 我无法使用我能找到的任何技术 cd 进入 ~/Library Support。 这是一项安全功能吗?
我将尝试禁用 SIP,看看是否会有所不同。

【讨论】:

    【解决方案4】:

    就我而言,我不小心将文件夹命名为“samples”。 当我执行“ls -la”时,我看不到空间。

    当我尝试使用 Tab 键自动完成并看到“samples\ /”时,我最终意识到了这一点。

    为了解决这个问题,我跑了

    mv samples\  samples
    

    【讨论】:

      猜你喜欢
      • 2021-03-01
      • 2012-11-21
      • 1970-01-01
      • 2018-06-03
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      相关资源
      最近更新 更多