linux用cp rm mv操作文件的时候会出现列表过长报错,需要用别的方法操作文件。
-bash: /usr/bin/cp: Argument list too long
1. 将如下代码保存到op_.py:
import os
import argparse
from shutil import copyfile, move
from fnmatch import fnmatch, fnmatchcase
parser = argparse.ArgumentParser(description='file options')
parser.add_argument('op', default='', choices=['rm', 'mv', 'cp'],
help='remove files')
parser.add_argument('extensions', type=str,
help='Extension name')
parser.add_argument('paths', metavar='N', nargs='+', type=str,
help='Source data path / Path to remove')
args = parser.parse_args()
if (not args.op=='rm') and (not os.path.exists(args.paths[1])):
os.mkdir(args.paths[1])
def main():
for root, dirs, files in os.walk(args.paths[0]):
for filename in files:
if fnmatch(filename, args.extensions):
src_path = os.path.join(args.paths[0], filename)
if args.op == 'rm':
os.remove(src_path)
continue
tgt_path = os.path.join(args.paths[1], filename)
if args.op == 'cp':
copyfile(src_path, tgt_path)
continue
if args.op == 'mv':
move(src_path, tgt_path)
if __name__ == "__main__":
main()
1. 复制文件
python op_.py cp *.jpg ./source/dir/ ./target/dir/
2. 删除文件:
python op_.py rm *.jpg ./source/dir/
3. 移动文件:
python op_.py mv *.jpg ./source/dir/ ./target/dir/