pythonに簡単なバックアップスクリプトを書き込もうとしています。ここでは、選択した特定のディレクトリに24時間経過したファイルを一覧表示しようとしています。
検索のマニュアルを読んで使用しました
見つける。 -mtime 1> log.dat
log.dat内のファイルのリストを取得しますが、そのリスト内のパス情報も取得します。
./hpc06MatlabCodes/2011/Apr/3dBoxModel
./ hpc06MatlabCodes/2011/Apr/3dBoxModel/vfluidIrca10.dat ./hpc06MatlabCodes/2011/Apr/3dBoxModel/vLRecoveredSystem.mat
ディレクトリを除外してファイルリストのみを取得する方法はありますか。グリーツ、ウムット
'-type f'フラグを追加して、以下を検索します。
$ find . -type f -a -mtime 1 > log.dat
(-a
is'and'-これはデフォルトの接続詞ですが、将来のある時点でデフォルトが変更される場合に備えて指定したいと思います。)
あなたがこれをしているのはPythonなので、私は以下を使用します:
def get_old_files(topdir, howold=24*3600):
import os, time
now = time.time()
filelist = []
def traverse_links(filename):
if not os.path.islink(filename):
return filename
return traverse_links(os.path.normpath(
os.path.join(os.path.dirname(filename), os.readlink(filename)))))
for dirpath, dirnames, filenames in os.walk(topdir):
for name in [traverse_links(os.path.join(dirpath, f)) for f in filenames]:
try:
if os.path.isfile(name) and now - os.path.getmtime(name) > howold:
filelist.append(name)
except OSError:
pass # ignore bad symlinks
return filelist
これはあなたが望むことをするはずです、あなたはまたディレクトリを削減するオプションの引数を追加することができます。 find
を呼び出すよりもこれを使用する利点は、プロセス内ですべてを実行するのではなく、新しいプロセスの生成に伴う余分なオーバーヘッドです。