遇到一个场景:
系统磁盘空间不,发现有大量非必要小文件,考虑将其全部备份(无法打包)
直接用mv * 会提示参数过多,就是文件太多了,mv无法执行,cp同样报错,报错如下:
-bash: /usr/bin/mv: 参数列表过长
遂考虑每次处理1个
方案1:
shell :
#!/usr/bin/env bash
src_dir=xxx
dest_path=xxx
while true
do
#每次取目录前20个文件
for file in `ls ${src_dir} |head -20`
do
mv ${file} ${dest_path}
done
done
方案2:
import os
import shutil
import sys
def copy_files(src_path,dest_path):
file_obj=os.walk(src_path)
file_g1=(os.path.join(parent_path,sub_file) for parent_path,sub_dir,subfile_list in file_obj for sub_file in subfile_list)
for file in file_g1:
# print(file)
shutil.copy(file,dest_path)
os.remove(file)
if __name__ == '__main__':
copy_files(sys.argv[1],sys.argv[2])
#操作 python3 xxx.py src_dir dest_dir
有其他更好方案得小伙伴欢迎指导