2011-03-15 87 views
0

伙计们,我用gzip压缩,像这样一堆文件:mv命令行 - 文件消失了?

... 
la.20110208.gz 
va.20110208.gz 
la.20110209.gz 
va.20110209.gz 
    ... 

我输入意外以下命令

mv la.20110209* <enter> 

,而我想键入

mv la.20110209* /docs_backup/<enter> 

现在我找不到我的文件:只有va.20110209.gz仍然存在。任何想法在哪里la.20110209.gz去了?我在Ubuntu上运行bash shell ....

谢谢。

回答

4

如果有整整两个文件匹配该模式,恐怕你将失去其中一个。如果键入:

mv *20110209* 

... bash会运行mv之前扩大这些通配符,还等什么mv会看看是否匹配的只是这两个文件是:

mv blahblah.20110209-b.gz blahblah.20110209.gz 

所以blahblah.20110209.gz将已被覆盖通过blahblah.20110209-b.gz。如果有迹象表明然后再配两个以上的文件,你会得到错误:

mv: target `blahblah.20110209.gz' is not a directory 

最好的情况是,如果*20110209*扩展到文件列表和目录作为最后一个项目,在这种情况下,他们会全部移入该目录。但是,这听起来好像这是我提到的第一个案例。

(有些人喜欢别名mvmv -i对于这种原因。)

+0

你雄辩地解释了我害怕的事情。 ((耻辱的头)) – Chris 2011-03-15 21:23:42

+0

@Chris:运气不好(这不幸事故太容易发生) – 2011-03-15 21:26:51

+0

诅咒我的肥手指....应该有一个标题为“你最糟糕的nix错误” :那将是我的贡献。 – Chris 2011-03-15 21:31:08

3

当你输入mv *20010209*你的shell执行路径扩展上使得mv命令中看到以下参数:

mv la.20110208.gz va.20110208.gz ... la.20110209.gz last_file 

如果last_file恰好是一个目录,然后将所有文件之前上市它会被移到那里。除非您只有两个匹配的文件,否则必须发生这种情况,因为您会收到mv的错误。

寻找一个是通过以下命令匹配*20010209*目录,也就是你的文件将是:

find . -type d -name "*20010209*" 
+0

好吧,键入'回声MV * 20110209 *'简单重复'MV * 20110209 *'。没有其他的。我错过了什么? – Chris 2011-03-15 21:21:33

+0

@Chris查看更新后的答案 – SiegeX 2011-03-15 21:22:24

+0

find()只返回一个匹配模式的文件。 !@#%$。好的。我会联系我的系统管理员。 – Chris 2011-03-15 21:28:01