mv命令将目录名称与命令选项混淆


12

我有一个目录--pycache--,我需要移至该目录__pycache__。通过mv以下方式使用命令,可得到列出的输出。如何使用CLI来做我想做的事?

$ mv --pycache-- __pycache__
/bin/mv: unrecognized option '--pycache--/'

Answers:


22

这是文件名/目录以不太传统的符号开头的标准问题。您的问题是mv将--pycache--视为长选项名称(因为它以-开头,所以还有短选项,它们以-开头)。有关多头和空头期权的详细信息,请参见手册页以获取getopt

在这种情况下,标准的解决方法是在所有参数前使用一个空的双破折号-告诉命令(在您的情况下为mv,但将与其他命令(例如cp)一起使用)停止将以下内容视为选项并将其视为论点。

因此,您的命令将变为:

$ mv -- --pycache--/ __pycache__

而且不会失败。


8
好的答案,但我想你的意思是-告诉命令停止将后面的内容视为选项并将其视为参数,而不是相反。
RoundTower

1
我认为这是更容易移植到预先准备./mv ./--pycache-- __pycache__
凯文

3
@Kevin仅在参数为文件名时才有效。
starblue 2011年

16

您的第一个字符-对于mv命令来说是模棱两可的(或者确切地说,它意味着在选项名之后)。

尝试以下方法:

mv ./--ppycache-- __pycache__

资料来源:linux.about.com


2
+1替代解决方案,如果该命令不支持,也可以使用
Sverre Rabbelier
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.