bash - 최신 버전 디렉토리 유지

bash - 최신 버전 디렉토리 유지

내 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 지원이 통합되어 있습니다. 세부정보 보기여기그리고여기. 그러나 표준 명령줄 도구를 사용할 수도 있습니다.

관련 정보