我遇到一个特殊问题,需要我随后跟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"以及其中的其他一切。
在命令中是否有我遗漏的东西?任何事都将不胜感激!
答案 0 :(得分:1)
&符号在后台运行cd
命令,启动子shell,更改目录,退出。然后rm -r
在当前目录中运行,该目录没有要忽略的Fol1或Fol2。你想要一个分号来分隔这样的命令:
cd A; rm -r !(Fol1|Fol2)