如何在Unix shell脚本中从Filename获取Substring

时间:2014-03-14 11:47:57

标签: linux shell

我想要一个shell脚本从文件中获取MMDDYYYY,其名称如下文件

所示
linuxbox.23566.MMDDYYYYHHMMSS.zip

2 个答案:

答案 0 :(得分:2)

使用bash字符串函数:

for file in *.zip; do 
    file="${file%.*}"
    file="${file##*.}"
    echo "${file:0:8}"
done

阐释:

  • file="${file%.*}":删除扩展程序并将新名称存储在file变量
  • file="${file##*.}":从头开始删除最长匹配,并将名称存储在file变量
  • echo "${file:0:8}"echoes剩下的最后8个字符。

演示:

$ ls
linuxbox.23566.MMDDYYYYHHMMSS.zip
$ for file in *; do file="${file%.*}"; file="${file##*.}"; echo "${file:0:8}"; done
MMDDYYYY

答案 1 :(得分:1)

使用cut

$ cut -d. -f3 <<< "linuxbox.23566.MMDDYYYYHHMMSS.zip" | cut -c-8
MMDDYYYY

因为第一部分正在返回:

$ cut -d. -f3 <<< "linuxbox.23566.MMDDYYYYHHMMSS.zip"
MMDDYYYYHHMMSS

然后它获得前8个字符。