我正在尝试将目录名的一部分保存到变量中,以便我可以将其添加到文件名的开头。
这是我到目前为止所做的:
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
等等。
答案 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
答案 2 :(得分:1)
使用awk:
尝试此find命令find Chapter* -name "*.iso" -type f | awk -F'/' '{
split($1, a, "_");
system("mv " $0 " " $1 "/" a[2] "_" $2)
}'