-1

Background

I have already thoroughly read through this question: Copy a range of fiels and tried most of the answers.

I exported data into a single .json then split the .json file into smaller serialized files with 50k lines in each.

$ls

smaller_aaaa  smaller_aaak  smaller_aaau  smaller_aabe  smaller_aabo  smaller_aaby  smaller_aaci  smaller_aacs  smaller_aadc  smaller_aadm
smaller_aaab  smaller_aaal  smaller_aaav  smaller_aabf  smaller_aabp  smaller_aabz  smaller_aacj  smaller_aact  smaller_aadd  smaller_aadn
smaller_aaac  smaller_aaam  smaller_aaaw  smaller_aabg  smaller_aabq  smaller_aaca  smaller_aack  smaller_aacu  smaller_aade  smaller_aado
smaller_aaad  smaller_aaan  smaller_aaax  smaller_aabh  smaller_aabr  smaller_aacb  smaller_aacl  smaller_aacv  smaller_aadf  smaller_aadp
smaller_aaae  smaller_aaao  smaller_aaay  smaller_aabi  smaller_aabs  smaller_aacc  smaller_aacm  smaller_aacw  smaller_aadg  smaller_aadq
smaller_aaaf  smaller_aaap  smaller_aaaz  smaller_aabj  smaller_aabt  smaller_aacd  smaller_aacn  smaller_aacx  smaller_aadh  smaller_aadr
smaller_aaag  smaller_aaaq  smaller_aaba  smaller_aabk  smaller_aabu  smaller_aace  smaller_aaco  smaller_aacy  smaller_aadi  smaller_aads
smaller_aaah  smaller_aaar  smaller_aabb  smaller_aabl  smaller_aabv  smaller_aacf  smaller_aacp  smaller_aacz  smaller_aadj  smaller_aadt
smaller_aaai  smaller_aaas  smaller_aabc  smaller_aabm  smaller_aabw  smaller_aacg  smaller_aacq  smaller_aada  smaller_aadk
smaller_aaaj  smaller_aaat  smaller_aabd  smaller_aabn  smaller_aabx  smaller_aach  smaller_aacr  smaller_aadb  smaller_aadl

Goal

I want to copy the files from smaller_aaau to smaller_aadd into a new directory in the current directory.

What I've tried:

variations of these as well

cp smaller_aa{au..dd} ./GlobalBuckets

I also tried using bash scripting:

#!/bin/bash
for file in {au..dd};do cp smaller_aa$file ~/Downloads/SPLIT/GlobalBuckets;done;
bash script

error for both methods:

cp: cannot stat 'smaller_aa{au..dd}': No such file or directory
Garrett
  • 101
  • 3

2 Answers2

0
#!/usr/bin/python3

import os
import shutil

files = os.listdir()
for file in files:
    if file[:10] == "smaller_aa" and len(file) > 12:
        if file[8:12] >= "aaau" and file[8:12] <= "aadd":
            shutil.copyfile(file, f"/path/to/target/dir/{file}")

You can make it all in one line using list comprehension, but for this case, I think the code above makes the logic more visible

surfingonthenet
  • 695
  • 2
  • 6
0

I want to copy the files from smaller_aaau to smaller_aadd into a new directory in the current directory.

Do it in small incrementals, e.g.:

  • Copy smaller_aaau to smaller_aaaz first, then
  • Copy smaller_aada to smaller_aadd, then
  • Copy smaller_aaba to smaller_aacz

Should be something like:

cp smaller_aaa[u-z] smaller_aad[a-d] smaller_aa[b-c]* /path/to/destination

Square bracket globbing only support a range of integers ([107-203]) or a range of characters ([a-d], [A-Ca-c]).

mforsetti
  • 2,488
  • 2
  • 14
  • 20