如何从文件名中提取字符串?

如何从文件名中提取字符串?

我正在尝试读取文件名的一部分以将其放入if .. else语句中

例如 : 文件名 : foo_bar_test1_example.stat

我想做一个测试;如果文件名中存在单词 : example,则有一些脚本要执行。

提前致谢 :)

答案1

case是 Bourne 系列 shell(Bourne、Almquist、ksh、bash、zsh、yash...)中的构造:

case $file in
  *example*) do-something-for-example "$file";;
  *) do-something-else-if-not "$file";;
esac

在系列 shell 中csh(csh、tcsh):

switch ($file:q)
  case *example*:
    do-something-with $file:q
    breaksw

  default:
    do-something-else-with $file:q
    breaksw
endsw

fish外壳中:

switch $file
  case '*example*'
    do-something-with $file
  case '*'
    do-something-else-with $file
end

rcaganga

switch ($file) {
  case *example*
    do-something-with $file

  case *
    do-something-else-with $file
}

es

if {~ $file *example*} {
  do-something-with $file
} {
  do-something-else-with $file
}

答案2

bash可以执行以下操作:

#!/bin/bash
#let's look for an a in our handful of files
string="a"
for file in aa ab bb cc dd ad ; do
  #note the placement of the asterisks and the quotes
  #do not swap file and string!
  if [[ "$file" == *"$string"* ]] ; then
     echo "$string in $file"
  else
     echo "no match for $file"
  fi
done

编辑:bash按照@JeffSchaller的建议,使用 的正则表达式匹配进行简化:

if [[ "$file" =~ $string ]] ; then

相关内容