Bash 如何将awk输出移动到单个文件夹?
我正在尝试将awk输出文件移动到单个文件夹中。每个输出文件的名称应为输入文件的名称。我使用了下面的程序。但该程序将每个输出文件保存为“out”,其目录名为输入文件的名称。如何更改以下代码以将输出保存到具有输入文件名的单个文件夹中Bash 如何将awk输出移动到单个文件夹?,bash,awk,Bash,Awk,我正在尝试将awk输出文件移动到单个文件夹中。每个输出文件的名称应为输入文件的名称。我使用了下面的程序。但该程序将每个输出文件保存为“out”,其目录名为输入文件的名称。如何更改以下代码以将输出保存到具有输入文件名的单个文件夹中 for i in file/*.txt; do mkdir "$i"_dir; awk -f script.awk "$i" > "$i"_dir/out; done 应该工作,还是内联 for i in file/*.txt; do awk -f scr
for i in file/*.txt; do mkdir "$i"_dir; awk -f script.awk "$i" > "$i"_dir/out; done
应该工作,还是内联
for i in file/*.txt; do awk -f script.awk "$i" > out; done
您的输出文件将在当前目录中命名为“out”
还要注意的是,这既不会生成目录,也不会在其中存储输出。如果您需要创建目录,但不向其写入,则必须添加mkdir
命令
编辑
根据您更新的问题,您首先需要创建一个输出目录,我们将其称为foo
mkdir foo
现在目录结构应该是
/path/to/your/base-folder/
./file/ <-- The directory in which your .txt files reside
./foo/ <-- Your output folder
或者,如果您希望输出文件具有文件扩展名:
for i in file/*.txt; do awk -f script.awk "$i" > foo/"$i".txt; done
犹太矮人
如果需要所有输出,则必须添加>以代替。否则,您将只进行循环的最后一次迭代
for i in file/*.txt; do awk -f script.awk "$i" >> out; done
将输出重定向移到循环外部
mkdir dir
for i in file/*.txt; do
awk -f script.awk "$i"
done > dir/out
试试这个
文件/*.txt中i的;做mkdir;awk-f script.awk“$i”>>dir/out;完成
您可以通过从dir
更改为anything
来更改所需的目录名
文件/*.txt中i的
;做任何事;awk-f script.awk“$i”>>任何内容/输出;完成
输出
将只包含最后一个文件的结果,因为每次迭代都将覆盖最后一个文件的结果。输出文件应调用什么?或者多个文件的输出应该在单个out
文件中吗?输出文件应该是文件名的名称。在我的程序中,所有输出文件都命名为out而不是filename。
for i in file/*.txt; do awk -f script.awk "$i" >> out; done
mkdir dir
for i in file/*.txt; do
awk -f script.awk "$i"
done > dir/out
for i in file/*.txt; #get a value for "i"
do mkdir "$i"_dir; #create a folder called *value for i"_dir
awk -f script.awk "$i" > "$i"_dir/out; done #save the output to the created
#directory saving only the last
#iteration of the cycle, as @farid said.