python – 删除除两个特定目录之外的所有文件/目录

前端之家收集整理的这篇文章主要介绍了python – 删除除两个特定目录之外的所有文件/目录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

因此,似乎有一些问题要求删除匹配某些情况的文件/目录,但我正在寻找完全相反的:删除与我提供的示例不匹配的文件夹中的所有内容.

例如,这是一个示例目录树:

  1. .
  2. |-- coke
  3. | |-- diet
  4. | |-- regular
  5. | `-- vanilla
  6. |-- icecream
  7. | |-- chocolate
  8. | |-- cookiedough
  9. | |-- cupcake
  10. | | |-- file1.txt
  11. | | |-- file2.txt
  12. | | |-- file3.txt
  13. | | |-- file4.txt
  14. | | `-- file5.txt
  15. | `-- vanilla
  16. |-- lol.txt
  17. |-- mtndew
  18. | |-- classic
  19. | |-- codered
  20. | |-- livewire
  21. | | |-- file1.txt
  22. | | |-- file2.txt
  23. | | |-- file3.txt
  24. | | |-- file4.txt
  25. | | `-- file5.txt
  26. | `-- throwback
  27. `-- pepsi
  28. |-- blue
  29. |-- classic
  30. |-- diet
  31. `-- throwback

我想删除test / icecream / cupcake /和test / mtndew / livewire /中的文件.其他一切都可以,包括目录结构.那么,我怎样才能做到这一点?我不介意的语言:bash或python.

最佳答案
想到了-prune,但是要让它适用于特定的路径(冰淇淋/蛋糕/)而不是特定的目录(cupcake /)是一件痛苦的事.

就个人而言,我只是使用cpio和硬链接(以避免必须复制它们)要保留到新树的目录中的文件,然后删除旧的:

  1. find test -path 'test/icecream/cupcake/*' -o -path 'test/mtndew/livewire/*' | cpio -padluv test-keep
  2. rm -rf test

这也将保留您打算保留的目录的现有目录结构.

猜你在找的Linux相关文章