这是我的/html
文件夹下的内容。
[root@ip-10-0-7-121 html]# ls
a wp-activate.php wp-content wp-mail.php
b wp-admin wp-cron.php wp-settings.php
healthy.html wp-blog-header.php wp-includes wp-signup.php
index.php wp-comments-post.php wp-links-opml.php wp-trackback.php
license.txt wp-config.php wp-load.php xmlrpc.php
readme.html wp-config-sample.php wp-login.php
我想删除除文件夹之外的所有内容a
,b
而不必将a
/b
文件夹移动到另一个文件夹。执行此操作的命令是什么?
答案1
您可以使用find
否定(风险自负)。
查找名为“a”或“b”的所有文件和文件夹:
find -name a -o -name b
查找当前目录中名为“a”或“b”的所有文件和文件夹”
find -maxdepth 1 -name a -o -name b
查找当前目录中所有不名为“a”且不名为“b”的文件和文件夹:
find -maxdepth 1 ! -name a ! -name b
还从结果中排除当前目录
find -maxdepth 1 ! -name a ! -name b ! -name .
现在您可以使用rm
删除所有已创建的元素:
find -maxdepth 1 ! -name a ! -name b ! -name . -exec rm -rv {} \;
答案2
我使用此命令删除当前目录中除选定文件/文件夹之外的所有文件/文件夹(包括隐藏的文件/文件夹)。
find . -maxdepth 1 ! -name "file1.php" ! -name "file2.js" ! -name "dir1" ! -name "dir2" ! -name . -exec rm -r {} \;