Bash:用空字符串替换substring

时间:2012-08-13 09:45:20

标签: string bash shell replace substring

我有名为的文件夹:

example1 example2 example3

我想从每个中提取示例编号。类似的东西:

for exampleSubfolder in `find . -type d`
do
  example_number= #replace 'example' in $exampleSubfolder with empty string
  #do other stuff in this subfolder
done

有任何简单的方法吗?

3 个答案:

答案 0 :(得分:4)

如果您只需要数字:

find . -type d -name 'example*' | egrep -o "[0-9]+"

但是如果你想知道文件夹名称和号码之间的对应关系:

for f in $(find . -mindepth 1 -maxdepth 1 -type d -name 'example*')
do
   number=${f#example}
done

更新了字符串替换bashism。

答案 1 :(得分:2)

试试这个:

for DIR in /path/to/search/example*; do
  if [ ! -d $DIR ]; then continue; fi
  NUMBER=$(echo $DIR | grep -Eo '[0-9]+$')
  pushd $DIR
    # Do stuff here
  popd
done

答案 2 :(得分:2)

find . -name "example*" -type d | awk -F"example" '{print $NF}'