2015-10-20 219 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

不是太棒了。剛到那裏,在你做那麼多年之前:-)「經歷就是你得到的,在你需要之後」。 –