英文:
How can I loop through a folder containing inputfiles and write outputfiles in a different folder?
问题
我有一个bash脚本,它应该循环遍历一个目录(source-folder),并运行一个程序(myProgram)来处理目录中的所有文件,并将输出写入另一个目录。输出文件的名称应该略有不同。
我的myProgram需要5个参数:
./myProgram PAR1 infile1.txt PAR3 PAR4 infile_run1.txt
source-folder:
- infile1.txt
- infile2.txt
- infile3.txt
dest-folder
- infile_run1.txt
- infile_run2.txt
- infile_run3.txt
我可以循环遍历文件夹,使用所有文件运行我的程序,但我的问题是如何将输出文件写入不同的目录:使用下面的代码只会创建一个名为NewName的文件。
如何为每个输入文件(来自source-folder)获得一个输出文件(到dest-folder)?
#!/bin/bash
for filename in ~/path/to/source-folder/*;
do
echo $filename
./myProgram -A $filename -B -C ~/path/to/dest-folder/Newname
done
英文:
I have a bash script that is supposed to loop through a directory (source-folder) and run a program (myProgram) with all files in the directory and write the output to another directory. The files in output are supposed to have a slightly different name.
My myProgram takes 5 parameters:
./myProgram PAR1 infile1.txt PAR3 PAR4 infile_run1.txt
source-folder:
- infile1.txt
- infile2.txt
- infile3.txt
dest-folder
-
infile_run1.txt
-
infile_run2.txt
-
infile_run3.txt
I can loop through the folder, run my program with all files but my problem is writing the output files into a different directory: Using my code below creates just 1 File named NewName.
How do I get an output file (to the dest-folder) for each input file (from the source-folder)?
#!/bin/bash
for filename in ~/path/to/source-folder/*;
do
echo $filename
./myProgram -A $filename -B -C ~/path/to/dest-folder/Newname
done
答案1
得分: 1
我对myProgram的功能和选项不确定,所以只是作为一个展示,我创建了一个名为myProgram.sh的文件。它的目的是计算每个文件中的字符数,并将计数记录在输出文件中:
#!/bin/bash
src="./source-folder"
dest="./dest-folder"
for input in "$src"/infile*.txt;
do
echo "Processing: $input"
# 确定基本名称
base=$(basename "$input" .txt)
# 构造输出文件名
output="$dest/${base}_run1.txt"
# 调用myProgram来计算输入文件中的字符数并捕获输出
char_count=$(./myProgram.sh "$input")
# 将字符计数写入输出文件
echo "Character count: $char_count" > "$output"
done
而myProgram.sh的内容如下:
#!/bin/bash
# 计算输入文件中的字符数
char_count=$(wc -c < "$1")
echo "$char_count"
英文:
I was unsure about the features and options of myProgram, so just as a showcase, I created a file called myProgram.sh. Its purpose is to calculate the number of characters in each file and record the counts in the output files:
#!/bin/bash
src="./source-folder"
dest="./dest-folder"
for input in "$src"/infile*.txt;
do
echo "Processing: $input"
# Determine the base name
base=$(basename "$input" .txt)
# Construct the output filename
output="$dest/${base}_run1.txt"
# Call myProgram to count characters in the input file and capture the output
char_count=$(./myProgram.sh "$input")
# Write the character count to the output file
echo "Character count: $char_count" > "$output"
done
And the myProgram.sh:
#!/bin/bash
# Count the number of characters in the input file
char_count=$(wc -c < "$1")
echo "$char_count"
答案2
得分: 1
以下是翻译好的内容:
对于~/path/to/source-folder/目录下的每个文件,执行以下操作:
./myProgram -A $filename -B -C ~/path/to/dest-folder/$(basename $filename)
这可能是我会这样做的方式,尽管我没有测试过,但它应该能给你一个开始的方向。
英文:
for filename in ~/path/to/source-folder/*; do
./myProgram -A $filename -B -C ~/path/to/dest-folder/$(basename $filename)
done
is probably how i would do it though I did not test it, but it should give you something to start on
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论