Ordenar archivos en carpetaMuchachos,
Tengo una lista de archivos que quiero concatenar (vea la primera figura).La preferencia sería concatenar como se muestra, es decir "surf_12275-87-1 ..., "surf_12275-87-2 ...", etc. Sin embargo, cuando formo una lista de los archivos en la carpeta (después de quitar los caracteres innecesarios), la secuencia es "12275-87- 1 , 12275-87- 10 , 12275-87- 11 ". Sin embargo, la preferencia sería "12275-87- 1 , 12275-87- 2 , 12275-87- 3 ". Obviamente, la forma más sencilla de solucionar el problema es que los archivos me lleguen en forma de "-01, -02, ... -10, -11", pero no siempre será así.
¿Existe una forma sencilla de colocar los archivos en el formato de clasificación preferido para poder abrirlos y concatenarlos de menor a mayor? Se adjunta el guión actual.
s_path = {};
X_path = {};
f1 = Files In Directory( SD1, recursive(1));
For( i = 1, i <= N Items( f1 ), i++,
b = f1[i];
c = Contains Item(b, "surf", "_");
If( c==1,
d = Word(2, b, "_");
Insert Into(s_path,d),
Insert Into(X_path, d)
)
);
Show(s_path);


ScriptingRe: ordenar archivos en carpetaLa tabla de datos JMP parece estar usando clasificación numérica si tiene el tipo de modelado de columnas como ordinal, por lo que podría usar eso o un bucle for.
Names Default To Here(1);
a = {
"surf_12275_87-1_r250",
"surf_12275_87-2_r250",
"surf_12275_87-3_r250",
"surf_12275_87-4_r250",
"surf_12275_87-5_r250",
"surf_12275_87-6_r250",
"surf_12275_87-7_r250",
"surf_12275_87-8_r250",
"surf_12275_87-9_r250",
"surf_12275_87-10_r250",
"surf_12275_87-11_r250",
"surf_12275_87-12_r250",
"surf_12275_87-13_r250",
"surf_12275_87-20_r250",
"surf_12275_87-22_r250"
};
a = Sort List(a); //break the ordering
Show(a);
dt = New Table("",
New Column("SortList", Character, Ordinal, Set Values(a)), private
);
dt << Sort(By(:SortList), Order(Ascending), Replace Table);
b = dt:SortList << Get Values;
Close(dt, no save);
Show(b);
c = {};
For(i = 1, i <= N Items(a), i++,
Insert Into(c, a[i], Num(Words(a[i], "-_")[4]));
);
Show(c);Estos podrían dar una idea de cómo abordar el problema.
Re: ordenar archivos en carpetaAquí hay una forma de ordenar la lista, tomando los elementos de los nombres y separándolos en diferentes columnas en una tabla de datos, cambiando los elementos numéricos a columnas numéricas y luego ordenando la tabla de datos por todos los elementos.
names default to here(1);
f1={"surf_12275-87-11_r250_50x_mean_2.jmp", "surf_12275-87-2_r250_50x_mean_2.jmp",
"surf_12275-87-10_r250_50x_mean_2.jmp", "surf_12275-87-4_r250_50x_mean_2.jmp",
"surf_12275-87-5_r250_50x_mean_2.jmp", "surf_12275-87-6_r250_50x_mean_2.jmp",
"surf_12275-87-7_r250_50x_mean_2.jmp", "surf_12275-87-8_r250_50x_mean_2.jmp",
"surf_12275-87-9_r250_50x_mean_2.jmp", "surf_12275-87-1_r250_50x_mean_2.jmp",
"surf_12275-87-3_r250_50x_mean_2.jmp"};
dt = new table("Sort Table",
add rows(nitems(f1)),
new column("File Names", character)
);
dt:File Names << set values(f1);
// Create and populate separate columns for each element in the names
sortList = {};
i=1;
While(word(i,f1[1],"_-.") != "",
dt<<NEW column=""></NEW>
Estoy seguro de que otros miembros pueden tener métodos alternativos.
Re: ordenar archivos en carpetaJarmo,
Muchas gracias por enseñarme un nuevo conjunto de habilidades. Probé todos los enfoques sugeridos para mejorar mi capacidad de codificación. Aquí está mi última revisión que hace exactamente lo que quiero.
Gracias de nuevo
Neil
f1 = Files In Directory( SD1, recursive(1));
f1 = Sort List(f1);
dt = New Table("",
New Column("SortList", Character, Ordinal, Set Values(f1)), private
);
dt << Sort( By(:SortList), Order(Ascending), Replace Table);
b = dt:SortList << Get Values;
Close(dt, no save);
For( i=1, i <= N Items(b), i++,
file_1 = Open(SD1 || b[1]);
If(i > 1,
file_nxt = Open(SD1 || b[i], Private);
file_1 << Concatenate(file_nxt, Append to first table);
)
);
file_1 << Save(SD1 || "All Summary");Re: ordenar archivos en carpetaJim
No puedo decirles qué tan perspicaz fue este enfoque para otro problema (no relacionado con este hilo) que estaba teniendo. Es decir, nombres de archivos con arreglos de "elementos" imprevistos. Al menos puedo analizar los nombres de los archivos y "reordenarlos" para que tengan un etiquetado coherente.
Gracias, de nuevo, por toda su ayuda.
Neil