删除除一个目录之外的所有内容

删除除一个目录之外的所有内容

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

答案1

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

答案2

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

find /tmp/test -mindepth 1 -type d -name to_be_kept -prune -o -exec rm -rf {} \;

答案3

  • 这是一个简单的方法:

    ls /tmp/test | grep -v to_be_kept | xargs rm -r
    
  • 如果您还想删除隐藏内容:

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

总是先测试输出!

首先尝试一下这些,不要使用| xargs rm -r部分!如果您获得了要删除的文件和目录的列表,您也可以应用...

相关内容