遍历子目录并对某些文件执行 awk 脚本

遍历子目录并对某些文件执行 awk 脚本

我有一个名为 ../words 的目录,其中包含许多子目录(words/blabla,words/blabla),每个子目录又包含两种类型的文件 (.*1.txt) 和 (.*2.txt) 。我需要的是针对这些文件中的每一个运行一个 AWK 脚本。

会不会是类似的东西?

for d in words/*
do
    for f in .*[0-9].txt
    do
    awk -f script.awk ${f}
done
done

答案1

这应该有效:

for f in words/*/.*[12].txt
do
    awk -f script.awk "$f"
done

答案2

bash如果您使用像或 这样的现代 shell zsh,您可以使用类似以下内容:

for i in words/*/*{1,2}.txt; do awk -f script.awk "$i"; done

如果出于某种原因,您需要与 兼容/bin/sh,则可以使用这个稍微冗长且可读性较差的解决方案

for i in words/*/*1.txt words/*/*2.txt; do awk -f script.awk "$i"; done 

答案3

尝试这个for d in words/*; do for f in ./words/$d/*{0..9}.txt; do awk -f script.awk $f; done

相关内容