如何使用 Awk 和在 for 循环中查找来查找要编辑的文件并将其导出到与不同文件相同的目录
How do I find files to edit and export to the same directory as a different file using Awk and Find in a for loop
一个愚蠢的问题,但是我似乎无法通过 Whosebug 或其他 google 搜索结果找到答案。这个问题要么太具体,要么太愚蠢。我觉得应该是后者吧。。。
我正在使用awk
过滤不同子目录下的文件,我想在文件所在的同一子目录下输出结果。
我正在使用 find 命令,并且能够 awk
匹配模式的所有子目录中的文件。
我 find
文件以 .tsv 结尾,然后 awk 第 8 列(低于 -1 的值)然后我使用文件名的基数输出文件并添加 .txt
for file in $(find $DIR2 -type f -name '*.tsv'); do
awk -F$'\t' ' < -1' $(find $DIR2 -type f -name '*.tsv') > $DIR2/$(basename ${file%.*}).txt; done
不过有点卡,不知道怎么输出原来子目录下的文件
如果我使用 $DIR2/
,它只导出到这个特定目录下,没有 $DIR2/
,它会导出到当前工作目录。
试试这个(未测试):
find "$DIR2" -type f -name '*.tsv' -exec \
awk -F'\t' 'FNR==1{close(out); out=FILENAME; sub(/[^.]+$/,"txt",out)} < -1{print > out}' {} +
如果您的 find
不支持 +
则将其替换为 \;
。
一个愚蠢的问题,但是我似乎无法通过 Whosebug 或其他 google 搜索结果找到答案。这个问题要么太具体,要么太愚蠢。我觉得应该是后者吧。。。
我正在使用awk
过滤不同子目录下的文件,我想在文件所在的同一子目录下输出结果。
我正在使用 find 命令,并且能够 awk
匹配模式的所有子目录中的文件。
我 find
文件以 .tsv 结尾,然后 awk 第 8 列(低于 -1 的值)然后我使用文件名的基数输出文件并添加 .txt
for file in $(find $DIR2 -type f -name '*.tsv'); do
awk -F$'\t' ' < -1' $(find $DIR2 -type f -name '*.tsv') > $DIR2/$(basename ${file%.*}).txt; done
不过有点卡,不知道怎么输出原来子目录下的文件
如果我使用 $DIR2/
,它只导出到这个特定目录下,没有 $DIR2/
,它会导出到当前工作目录。
试试这个(未测试):
find "$DIR2" -type f -name '*.tsv' -exec \
awk -F'\t' 'FNR==1{close(out); out=FILENAME; sub(/[^.]+$/,"txt",out)} < -1{print > out}' {} +
如果您的 find
不支持 +
则将其替换为 \;
。