내 Python 애플리케이션은 다음 계층 구조에 저장됩니다.
PyCharmProjects/app/versions/v1
PyCharmProjects/app/versions/v2
PyCharmProjects/app/versions/v3
PyCharmProjects/app/versions/v4
PyCharmProjects/app/versions/v5
PyCharmProjects/app/versions/v6
최신 2개 버전에 해당하지 않고 7일이 지난 모든 디렉토리를 삭제하는 bash 스크립트를 어떻게 작성할 수 있습니까?
9일 전에 생성되었기 때문에 v4, v3, v2 및 v1을 삭제하고 싶습니다.
정규식을 사용하여 이를 수행할 수 있습니까?
PyCharm 자체에 이 작업을 수행할 수 있는 방법이 있나요?
답변1
find
! -path
다음 명령을 사용하여 명령에서 경로를 제외 할 수 있습니다 . 그러면 v5 디렉터리가 조회에서 제외됩니다.
find directory/* ! -path directory/v5
여러 디렉터리를 제외하려면 ! -path
아래와 같이 find 명령에서 동일한 작업을 다시 반복합니다. 그러면 v4와 v5가 조회에서 제외됩니다.
find directory/* ! -path directory/v4 ! -path directory/v5
귀하의 시나리오에서는 제외할 폴더 이름을 모릅니다. 따라서 디렉터리를 제외하는 대신 다른 find 명령을 구현할 수 있습니다.
아래 코드는 최신 폴더를 제공합니다.
find PyCharmProjects/app/versions ! -path PyCharmProjects/app/versions -type d -printf '%T@ %P\n' | sort -nr | head -n1 | awk '{print $2}'
-printf '%T@ %P\n'
타임스탬프가 있는 폴더가 나열됩니다.sort -nr
최신 폴더가 맨 위에 오도록 정렬이 역전됩니다.head -n1
최신 폴더를 추출합니다
두 번째 최신 폴더의 경우.
find PyCharmProjects/app/versions ! -path PyCharmProjects/app/versions -type d -printf '%T@ %P\n' | sort -nr | head -n2 | tail -n1 | awk '{print $2}'
head -n2
최신 두 개의 폴더가 제공됩니다.tail -n1
두 번째 최신 폴더가 제공됩니다.
v4와 v5 대신 위의 두 코드를 각각 구현합니다.
find PyCharmProjects/app/versions/* -maxdepth 1 ! -path PyCharmProjects/app/versions/`find PyCharmProjects/app/versions ! -path PyCharmProjects/app/versions -type d -printf '%T@ %P\n' | sort -nr | head -n2 | tail -n1 | awk '{print $2}'` ! -path PyCharmProjects/app/versions/`find PyCharmProjects/app/versions ! -path PyCharmProjects/app/versions -type d -printf '%T@ %P\n' | sort -nr | head -n2 | tail -n1 | awk '{print $2}'` -type d -mtime +7 -delete
! -path
제외 경로-type -d
디렉토리 찾기-maxdepth 1
현재 디렉터리에-mtime +7
디렉토리가 7일 전에 수정되었습니다.-delete
찾은 디렉터리를 삭제합니다.
답변2
PyCharm 자체에 이 작업을 수행할 수 있는 방법이 있나요?
이러한 디렉토리가 작업 중인 프로그램의 다른 버전을 나타낸다고 가정하면 이를 처리하는 표준적이고 공간 효율적인 방법은 버전 제어 시스템을 사용하는 것입니다.자식.
Git이 설정되면 새 버전으로 전환하는 것은 입력하는 것만큼 간단합니다.
$ git add .
$ git commit -m 'Commit message, e.g. "Rewrote the FooBar class, added logging."'
$ git push
이 순서는 프로젝트를 새 디렉터리에 복사하는 것과 동일하지만 공간 효율적이고 삭제가 필요하지 않습니다.
필요한 경우 간단한 명령을 사용하여 git checkout COMMIT_ID
언제든지 이전 버전으로 롤백 할 수 있습니다.
Pycharm에는 Git 지원이 통합되어 있습니다. 세부정보 보기여기그리고여기. 그러나 표준 명령줄 도구를 사용할 수도 있습니다.