Created
March 31, 2017 13:44
Star
You must be signed in to star a gist
特定のパス以下にあるサイズの大きなファイルを探すスクリプト
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
"""特定のパス以下にあるサイズの大きなファイルを探すスクリプト | |
usage: | |
$ python __script__ [path] --size [size] | |
$ # カレントディレクトリ以下の 100 MB 以上のファイルを探す場合 | |
$ python __script__ . --size 100 | |
""" | |
import argparse | |
from pathlib import Path | |
def search_files(path, size_min): | |
"""指定されたパス以下の指定されたサイズ以上のファイル名を一覧表示する | |
""" | |
size_min_in_mb = size_min << 20 | |
p = Path(path) | |
for file in p.iterdir(): | |
if file.is_dir(): | |
search_files(file, size_min) | |
elif file.is_file(): | |
size = file.stat().st_size | |
if size >= size_min_in_mb: | |
print('{:.1f}MB\t{}'.format(size >> 20, file.resolve())) | |
def arg_validate_args(): | |
"""対象のパスとサイズ( MB )をコマンドライン引数から取得する | |
""" | |
parser = argparse.ArgumentParser('Search large files.') | |
parser.add_argument('path', nargs='?', default='.', help='Path to search.') | |
parser.add_argument('-s', '--size', dest='size', type=int, required=True, help='Minimum file size (MB)') | |
args = parser.parse_args() | |
return args | |
if __name__ == '__main__': | |
args = arg_validate_args() | |
path = args.path | |
size = args.size | |
print('Searchinig files larger than or equals to {}MB in "{}"...'.format(size, path)) | |
search_files(path, size) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment