根据目录名称命名awk输出

时间:2014-05-12 21:03:33

标签: bash awk

我有一个awk脚本,我需要在几个目录中的每个文件上运行。如果文件路径是:

/home/user/folder1/run1/sample1/scans
/home/user/folder2/run1/sample1/scans

我只需要在scans内的run1文件夹中为每个folder#运行awk脚本。因此,输出的唯一区别命名约定是folder#。如何根据我所在的folder#目录将awk脚本命名为输出?

例如folder1.txt,然后folder2.txt等?

我是awk的新手,我可以在单个文件夹中输入一堆.txt输入,但不能将其指向整批文件夹。

重新组织文件夹结构不是一种选择,因为它是协作中的共享文件系统。

1 个答案:

答案 0 :(得分:0)

你可以做类似这样的awk命令:

s='/home/user/folder1/run1/sample1/scans'
awk -F '/' '{for (i=1; i<=NF; i++) if ($i=="run1") print $(i-1);}' <<< "$s"
folder1

同时使用findawk

find /home/user*/run1/*/scans -type d -exec \
     awk -F '/' '{for (i=1; i<=NF; i++) if ($i=="run1") print $(i-1);}' <<< '{}' \;