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最新のフォルダを抽出します

2番目の最新フォルダの場合。

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最新の2つのフォルダが用意されています。
  • tail -n12番目の最新のフォルダが提供されます。

v4とv5の代わりに上記の2つのコードをそれぞれ実装します。

 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サポートが組み込まれています。詳細を見るここそしてここ。ただし、標準のコマンドラインツールを使用することもできます。

関連情報