# -*- 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