주어진 디렉토리에서 하나의 파일(이름이 정의되어 있음)을 제외한 모든 파일을 삭제해야 합니다.
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
- 보존하려는 파일을 디렉토리 외부로 이동하십시오.
- 좋아하는 방법을 사용하여 디렉토리의 모든 것을 제거하십시오.
- 보존하려는 파일을 다시 디렉토리로 이동하십시오.
정확히 '첨단 기술'은 아니지만 이 접근 방식을 사용하면 보존하려는 파일을 실수로 삭제하는 것이 훨씬 더 어렵습니다.
모든 대학살이 발생하는 동안 파일이 디렉터리에 계속 존재해야 하는 경우 분명히 이 접근 방식은 실패합니다.
답변3
노력하다
rm `ls | grep -v '^defined$'`