Я начал набирать ответ, прежде чем увидел ваш комментарий о том, что вы заинтересованы только в решении bash, и в любом случае оставлял сообщения на тот случай, если кто-то найдет этот вопрос в будущем и будет открыт для решения R
.
Если бы я подходил к этому с нуля, я бы, вероятно, просто использовал функцию R, определенную в файле, которая принимает два имени файла, вместо того, чтобы возиться с вызовами system()
, но это обеспечило бы желаемое поведение.
## Get a vector of files matching each extension
counts_names <- list.files(path = ".", pattern ="*.counts.tsv")
libsize_names <- list.files(path = ".", pattern ="*.libsize.tsv")
## Get the root names of the files before the extensions
counts_roots <- gsub(".counts.tsv$", "",counts_names)
libsize_roots <- gsub(".libsize.tsv$", "",libsize_names)
## Get only root names that have both file types
shared_roots <- intersect(libsize_roots,counts_roots)
## Loop through the shared root names and execute an Rscript call based on the two files
for(i in seq_along(shared_roots)){
counts_filename <- paste0(shared_roots[[i]],".counts.tsv")
libsize_filename <- paste0(shared_roots[[i]],".libsize.tsv")
Command <- paste("Rscript score.R",counts_filename,libsize_filename)
system(Command)
}