且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何删除所有子文件夹除了文件夹名称X使用终端

更新时间:2022-10-14 23:26:23

  find。 -mindepth 1 -d-type d! -name X -a! -name Y -exec rm -r {} \ + 

mkdir d ;触摸d / f;找 。 -name d -delete 似乎不起作用。



-mindepth 1和-d 至少在OS X上是可选的。没有 -mindepth -1 将会有一个警告,如 rm:。和..可能不会被删除。没有 -d rm会删除子文件夹后删除其父文件夹。



{}不必转义



如果所有目录都在当前目录下:

  shopt -s extglob 
rm -r X | Y)/


What is the best way to remove all subfolders except ones with folder name X and Y using Terminal.

find . -mindepth 1 -d -type d ! -name X -a ! -name Y -exec rm -r {} \+

mkdir d; touch d/f; find . -name d -delete doesn't seem to work.

-mindepth 1 and -d are optional at least on OS X. Without -mindepth -1 there would be a warning like rm: "." and ".." may not be removed. Without -d rm would try to delete subfolders after deleting their parent folders.

{} doesn't have to be escaped.

If all directories are under the current directory:

shopt -s extglob
rm -r !(X|Y)/