# -*- coding: utf-8 -*- # python2.7 import os import sys import shutil file_list = [] # 想要拷贝的文件格式,例如 txt extended_format = sys.argv[1] # 拷贝文件的源目录名称 src_dir = sys.argv[2] # 拷贝文件的目标目录名称 dst_dir = sys.argv[3] if os.path.exists(src_dir): for current_dir, current_subdir, current_subfile in os.walk(src_dir): if current_subfile: for f in current_subfile: file_list.append(os.path.join(current_dir,f)) if file_list: for i in file_list: split_extname = os.path.splitext(i) if split_extname[1] and split_extname[1] == '.' + extended_format: dst_path = dst_dir + os.path.dirname(i) if not os.path.exists(dst_path): os.makedirs(dst_path) shutil.copy(i,dst_path) else: print 'File not found in source directory' else: print 'The source directory does not exist'
脚本说明:
在 linux 中,只是想拷贝指定目录中的指定格式的文件内容,拷贝到目标目录的同时保持源目录结构,可使用上述脚本。
例如拷贝 /etc 下所有以 .conf 结尾的文件到 /bak 目录下,同时所拷贝的 .conf 结尾的文件所在目录路径保持不变:
# python this_script.py conf /etc /bak