아래 명령 104.tar
은 /tmp/CURRENT
폴더 아래의 파일을 제외한 모든 파일을 반복적으로 삭제 합니다.
find /tmp/CURRENT/ -type f ! -name '104.tar' -exec rm -rf {} +
그러나에서 하위 폴더를 재귀 적으로 삭제하지는 않습니다 /tmp/CURRENT
.
내가 주면 -type d
도움이 될 수 있지만 별도의 명령을 원하지 않습니다. 내 요구 사항은 아래에서 시도한 동일한 단일 명령으로 파일과 폴더를 모두 삭제하는 것이지만 도움이되지 않았습니다.
find /tmp/CURRENT/ -type f -type d ! -name '104.tar' -exec rm -rf {} +
-type
옵션을 전혀 지정하지 않으면 명령 /tmp/CURRENT
은 내용이 아닌 전체 폴더를 삭제합니다 !
참고 : 내 OS는 Sun Solaris Sparc입니다.
제안 해 주시겠습니까?
당신이 사용하는 경우 -type f
당신이 말하고있다 find
하는 유일한 파일과 다른 아무것도를 고려한다. 따라서 이것이 디렉토리를 삭제하지 않는 것은 정상입니다. /tmp/CURRENT/
자체 삭제를 방지하려면 몇 가지를 시도해 볼 수 있습니다.
find
지원하는 경우 -mindepth
( find
Linux 시스템의 기본값 인 GNU) 에이 기능이 있으면 다른 find
버전이 지원할 수 있는지 모르겠습니다 . 최소한 한 수준 아래의 항목 만 보도록 지시 할 수 있습니다.
find /tmp/CURRENT/ ! -name '104.tar' -mindepth 1
두 번째 !
연산자를 사용 하여 제외합니다.
find /tmp/CURRENT/ ! -path /tmp/CURRENT/ ! -name '104.tar'
를 사용 하고 적어도 하나 이상의 문자로 -path
시작 /tmp/CURRENT
하고 뒤에 오는 경로를 찾으십시오 .
find /tmp/CURRENT/ -path '/tmp/CURRENT/?*' ! -name '104.tar'
세 가지 경우 모두 -exec rm -r {} +
명령 끝에 추가 하여 일치 항목을 삭제할 수 있습니다 .
그러나 이러한 명령은 특정 파일을 제외한 모든 항목 을 삭제 합니다 /tmp/CURRENT/104.tar
. 따라서 하위 디렉토리에 /tmp/CURRENT/dir1/104.tar
이름이 지정된 다른 파일 104.tar
이있는 경우 해당 파일 이 제거됩니다. 이것이 원하는 것이 아니라면 질문을 수정하여 명확히하십시오.
물론를 /tmp/CURRENT
제외한 모든 항목을 삭제하려는 경우 /tmp/CURRENT/104.tar
에는 전혀 필요하지 않습니다 find
. bash에서 실행할 수 있습니다.
shopt -s extglob
rm -r /tmp/CURRENT/!(104.tar)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다