私の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 -n1
2番目の最新のフォルダが提供されます。
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サポートが組み込まれています。詳細を見るここそしてここ。ただし、標準のコマンドラインツールを使用することもできます。