-
Notifications
You must be signed in to change notification settings - Fork 0
/
moveDuplicates.C
66 lines (63 loc) · 1.9 KB
/
moveDuplicates.C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{
int numDates = 5;
char dates[5][100] = {"Nov6","Oct20","Oct21","Oct26","Oct30"};
for(int i=0; i<numDates; i++){
char line[1000],filenm[100];
string fileName;
int memSize;
vector<string> fNames;
vector<int> fSizes;
int numSameSize=0;
string currentName;
int currentSize;
int isFirst = 1;
ifstream fp(Form("%s_Duplicates.txt",dates[i]),ios::in);
ostringstream out;
while (!fp.eof()){
fp.getline(line,1000);
sscanf(line,"%s - %i",&filenm,&memSize);
// printf("%s %i\n",filenm,memSize);
fileName=string(filenm);
if(isFirst)
{
isFirst = 0;
currentName=fileName;
currentSize = memSize;
fNames.push_back(fileName);
fSizes.push_back(memSize);
}
else if(memSize == currentSize)
{
fNames.push_back(fileName);
fSizes.push_back(memSize);
}
else if(memSize != currentSize)
{
for(int j=1;j<fNames.size();j++) // move all elements of the vector save the first.
{
//printf("mem: %i, name: %s\n", fSizes.at(j), fNames.at(j));
//cout << "mem: " << fSizes.at(j) << " name: " << fNames.at(j) << "\n";
out.str("");
out << "mv " << fNames.at(j) << " duplicateFileStorage/.";
const char *cstr = out.str().c_str();
gSystem->Exec(cstr);
}
currentSize = memSize;
currentName = fileName;
fSizes.clear();
fNames.clear();
fSizes.push_back(currentSize);
fNames.push_back(currentName);
}
}
fp.close();
}
for(int j=1;j<fNames.size();j++) // move all elements of the vector save the first. Handle EOF case.
{
//cout << "mem: " << fSizes.at(j) << " name: " << fNames.at(j) << "\n";
out.str("");
out << "mv " << fNames.at(j) << " duplicateFileStorage/.";
const char *cstr = out.str().c_str();
gSystem->Exec(cstr);
}
}