我有一个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输入,但不能将其指向整批文件夹。
重新组织文件夹结构不是一种选择,因为它是协作中的共享文件系统。
答案 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
同时使用find
和awk
:
find /home/user*/run1/*/scans -type d -exec \
awk -F '/' '{for (i=1; i<=NF; i++) if ($i=="run1") print $(i-1);}' <<< '{}' \;