Grep / Awk目录名称的一部分迭代变量

时间:2013-07-22 04:25:46

标签: shell awk grep

我正在尝试将目录名的一部分保存到变量中,以便我可以将其添加到文件名的开头。

这是我到目前为止所做的:

var=1
CH=`ls | awk '/[0-9]{2}(?=_.*)/ {if (NR=$var) print $0}'`
echo $CH

文件夹名称类似于01_Startup。但回声是空白的。我无法解决这个问题。有谁知道这是否可以使用shell脚本?我不太确定|' s的顺序以及如何组合命令。感谢。

树:

Benu-master
|
|--Chapter_02_Startup
|--|--01_Source_tree
|--|--02_Console
|--|--03_DEBUG

等等。

3 个答案:

答案 0 :(得分:1)

awk不支持PCRE,因此积极前瞻不会起作用。此外,bash变量不能像这样调用awk

我可以通过bash内置字符串替换来满足您的要求。

$ var=01_Startup
$ echo "${var%_*}"
01

您可以使用find收集目录列表并使用字符串替换。

find . -type d | while read -r dir; do echo "$dir ---> ${dir%_*}"; done

答案 1 :(得分:1)

这样的东西?

for c in Chapter_*; do
    v=${c#Chapter_}
    v=${v%%_*}
    echo chapter $c has number $v   # more chapter-processing code here
done

另外,avoid parsing ls output

答案 2 :(得分:1)

使用awk:

尝试此find命令
find Chapter* -name "*.iso" -type f | awk -F'/' '{
   split($1, a, "_");
   system("mv " $0 " " $1 "/"  a[2] "_" $2)
}'