Skip to main content
forgot to use already quoted values from .csv :D
Source Link
αғsнιη
  • 41.9k
  • 17
  • 75
  • 117

An awk solution can be:

awk -vq='"' -F'["F,]' 'NR>1 { id=q $2 q; g[$5]=group[$2]= g[$5]group[$2]? g[$5]group[$2] "* *" id $1: id$1 ;next }
    END { 
        for (x in ggroup) printf( "echo mv *%s* -t %s\n" , g[x]group[x], x )
    }' infile.csv| sh

Remove echo if you were happy with the result.

.
├── infile.csv
├── new
│   ├── E51651_hf_2018-9-19.jpg
│   └── hf_oldX56369_15-10-2014.xml
└── old
    ├── 2014-12-15_T921_F1256.png
    ├── 2018-07_xx54564564T_hfdata.bmp
    └── G5481369oldbackup_2018-01-01.txt

this will move all files belonging to related directory group at once.
about the awk explanation, please look at my recent answer.

An awk solution can be:

awk -vq='"' -F'[",]' 'NR>1 { id=q $2 q; g[$5]= g[$5]? g[$5] "* *" id : id ;next }
    END { 
        for (x in g) printf( "echo mv *%s* -t %s\n" , g[x], x )
    }' infile.csv| sh

Remove echo if you were happy with the result.

.
├── infile.csv
├── new
│   ├── E51651_hf_2018-9-19.jpg
│   └── hf_oldX56369_15-10-2014.xml
└── old
    ├── 2014-12-15_T921_F1256.png
    ├── 2018-07_xx54564564T_hfdata.bmp
    └── G5481369oldbackup_2018-01-01.txt

this will move all files belonging to related directory group at once.
about the awk explanation, please look at my recent answer.

An awk solution can be:

awk -F, 'NR>1 { group[$2]= group[$2]? group[$2] "* *" $1: $1 ;next }
    END { 
        for (x in group) printf( "echo mv *%s* -t %s\n" , group[x], x )
    }' infile.csv| sh

Remove echo if you were happy with the result.

.
├── infile.csv
├── new
│   ├── E51651_hf_2018-9-19.jpg
│   └── hf_oldX56369_15-10-2014.xml
└── old
    ├── 2014-12-15_T921_F1256.png
    ├── 2018-07_xx54564564T_hfdata.bmp
    └── G5481369oldbackup_2018-01-01.txt

this will move all files belonging to related directory group at once.
about the awk explanation, please look at my recent answer.

added 97 characters in body
Source Link
αғsнιη
  • 41.9k
  • 17
  • 75
  • 117

An awk solution can be:

awk -vq='"' -F'[",]' 'NR>1 { id=q $2 q; g[$5]= g[$5]? g[$5] "* *" id : id ;next }
    END { 
        for (x in g) printf( "echo mv *%s* -t %s\n" , g[x], x )
    }' infile.csv| sh

Remove echo if you were happy with the result.

.
├── infile.csv
├── new
│   ├── E51651_hf_2018-9-19.jpg
│   └── hf_oldX56369_15-10-2014.xml
└── old
    ├── 2014-12-15_T921_F1256.png
    ├── 2018-07_xx54564564T_hfdata.bmp
    └── G5481369oldbackup_2018-01-01.txt

this will move all files belonging to related directory group at once.
about the awk explanation, please look at my recent answer.

An awk solution can be:

awk -vq='"' -F'[",]' 'NR>1 { id=q $2 q; g[$5]= g[$5]? g[$5] "* *" id : id ;next }
    END { 
        for (x in g) printf( "echo mv *%s* -t %s\n" , g[x], x )
    }' infile.csv| sh

Remove echo if you were happy with the result.

.
├── infile.csv
├── new
│   ├── E51651_hf_2018-9-19.jpg
│   └── hf_oldX56369_15-10-2014.xml
└── old
    ├── 2014-12-15_T921_F1256.png
    ├── 2018-07_xx54564564T_hfdata.bmp
    └── G5481369oldbackup_2018-01-01.txt

this will move all files belonging to related directory group at once.

An awk solution can be:

awk -vq='"' -F'[",]' 'NR>1 { id=q $2 q; g[$5]= g[$5]? g[$5] "* *" id : id ;next }
    END { 
        for (x in g) printf( "echo mv *%s* -t %s\n" , g[x], x )
    }' infile.csv| sh

Remove echo if you were happy with the result.

.
├── infile.csv
├── new
│   ├── E51651_hf_2018-9-19.jpg
│   └── hf_oldX56369_15-10-2014.xml
└── old
    ├── 2014-12-15_T921_F1256.png
    ├── 2018-07_xx54564564T_hfdata.bmp
    └── G5481369oldbackup_2018-01-01.txt

this will move all files belonging to related directory group at once.
about the awk explanation, please look at my recent answer.

Source Link
αғsнιη
  • 41.9k
  • 17
  • 75
  • 117

An awk solution can be:

awk -vq='"' -F'[",]' 'NR>1 { id=q $2 q; g[$5]= g[$5]? g[$5] "* *" id : id ;next }
    END { 
        for (x in g) printf( "echo mv *%s* -t %s\n" , g[x], x )
    }' infile.csv| sh

Remove echo if you were happy with the result.

.
├── infile.csv
├── new
│   ├── E51651_hf_2018-9-19.jpg
│   └── hf_oldX56369_15-10-2014.xml
└── old
    ├── 2014-12-15_T921_F1256.png
    ├── 2018-07_xx54564564T_hfdata.bmp
    └── G5481369oldbackup_2018-01-01.txt

this will move all files belonging to related directory group at once.