在一行中执行两个命令

时间:2015-10-20 16:35:37

标签: unix command-line command

我遇到一个特殊问题,需要我随后跟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 个答案:

答案 0 :(得分:1)

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

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