디렉토리에서 하나를 제외한 모든 파일을 어떻게 삭제할 수 있습니까?

디렉토리에서 하나를 제외한 모든 파일을 어떻게 삭제할 수 있습니까?

주어진 디렉토리에서 하나의 파일(이름이 정의되어 있음)을 제외한 모든 파일을 삭제해야 합니다.

OS X의 터미널에서 이 작업을 어떻게 수행할 수 있나요? 하나의 명령으로 이 작업을 수행할 수 있습니까?

답변1

shopt -s extglob && rm !(non_delete_file)

또는

rm -f !(non_delete_file)

또는

find . ! -name non_delete_file -delete

find명령은 재귀적으로 작동합니다. 즉, 현재 디렉터리와 모든 하위 디렉터리의 모든 파일과 디렉터리가 삭제됩니다. 이것이 문제인 경우 -type f(파일만 일치시키려면) 및 -maxdepth 1(하위 디렉토리는 무시하고 현재 디렉토리의 항목만 일치시키려면)을 사용하십시오.

find . -type f -maxdepth 1 ! -name non_delete_file -delete

답변2

  1. 보존하려는 파일을 디렉토리 외부로 이동하십시오.
  2. 좋아하는 방법을 사용하여 디렉토리의 모든 것을 제거하십시오.
  3. 보존하려는 파일을 다시 디렉토리로 이동하십시오.

정확히 '첨단 기술'은 아니지만 이 접근 방식을 사용하면 보존하려는 파일을 실수로 삭제하는 것이 훨씬 더 어렵습니다.

모든 대학살이 발생하는 동안 파일이 디렉터리에 계속 존재해야 하는 경우 분명히 이 접근 방식은 실패합니다.

답변3

노력하다

rm `ls | grep -v '^defined$'`

관련 정보