2015-10-20 167 views
1

我有一个特殊的问题,需要我运行cd命令,后面跟着rm。但是我受限于我必须在一行中执行这两个命令的事实。在一行中执行两个命令

假设我在当前目录中有两个文件夹“A”和“B”。在“A”文件夹中,我还有两个文件夹“Fol1”和“Fol2”,并带有一个名为“File1”的文本文件。最后,在“Fol1”和“Fol2”中,它们都有一个单独的文本文件(不管它们被称为什么)。

举一个例子:

(Current dir)     
          A       B 
          |       | 
       --------------------------- 
       |   |   | 
       Fol1  Fol2  File1 
       |   | 
       FileA  FileB 

我想进入“A”,然后删除一切删除除什么在“Fol1”和“Fol2”的一切。

我发现,除去除了特定的目录都可以运行:

rm -r !(Fol1|Fol2) 

,我看到另一篇文章中,您可以使用&两个命令组合在一起。因此,从当前目录下,我决定运行:

cd A & rm -r !(Fol1|Fol2) 

但是,当我跑的命令,我得到:

[1] 17854 
[1]+ Done     cd A 

而且它最终删除“A”和“B”和其他一切在里面。

在命令中是否存在缺少的东西?任何东西将不胜感激!

回答

1

&符号刚刚在后台运行了cd命令,后者启动了一个子shell,更改了目录,退出了。然后在当前目录中运行rm -r,该目录中没有Fol1或Fol2可以忽略。你需要一个分号来分开这样的命令:

cd A; rm -r !(Fol1|Fol2) 
+0

你,先生,太棒了。谢谢您的帮助! –

+0

不是太棒了。刚到那里,在你做那么多年之前:-)“经历就是你得到的,在你需要之后”。 –