删除一切,但一个目录

我有一个/tmp/test目录。 其中我有文件和目录的混合。 其中一个目录是/tmp/test/to_be_kept 。 现在我想知道如何删除/tmp/test/to_be_kept之外的所有文件和目录以及其中的所有内容? 谢谢

 shopt -s extglob rm -r /tmp/test/!(to_be_kept) 

这将产生一些错误消息,当它试图重新访问已经被删除的目录时,你可以忽略它:

 find /tmp/test -mindepth 1 -type d -name to_be_kept -prune -o -exec rm -rf {} \; 
  • 这是一个简单的方法:

     ls /tmp/test | grep -v to_be_kept | xargs rm -r 
  • 如果你想删除隐藏也:

     ls -a /tmp/test | grep -v to_be_kept | xargs rm -r 

总是先testing输出!

先尝试这些没有| xargs rm -r | xargs rm -r部分! 如果你得到你想要删除的文件和目录列表,你可能也适用…