在Unix shell脚本中如何获取文件名的子字符串

5
我需要一个Shell脚本,从以下该文件名中获取MMDDYYYY信息。
linuxbox.23566.MMDDYYYYHHMMSS.zip
2个回答

4

使用 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
使用 cut 命令:
$ cut -d. -f3 <<< "linuxbox.23566.MMDDYYYYHHMMSS.zip" | cut -c-8
MMDDYYYY

因为第一部分正在返回:
$ cut -d. -f3 <<< "linuxbox.23566.MMDDYYYYHHMMSS.zip"
MMDDYYYYHHMMSS

然后获取前8个字符。

以上命令在终端中运行正常。但如果我将其添加到shell脚本中,它就无法正常工作了。您能否提供适用于该命令的shell脚本代码? - tech2network
你具体尝试了什么?请更新你的问题,展示你所做的。 - fedorqui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接