일부 특정 폴더를 제외하고 상위 폴더 아래의 모든 폴더를 삭제하는 방법

일부 특정 폴더를 제외하고 상위 폴더 아래의 모든 폴더를 삭제하는 방법

/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않고 폴더만 빼고 모두 삭제하고 싶어요 . 이를 수행하는 명령은 무엇입니까?bab

답변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 {} \;

관련 정보