文件名匹配基于已知的文件名

时间:2013-11-18 17:54:43

标签: bash

我希望用户输入可以驻留在任何位置的文件名,但文件的名称在最后.i.e中是固定的。 ABC。 TXT

假设用户输入的文件名为/usr/test/abc.txt,它位于我的脚本中的第二个位置参数

我想让下面的陈述真实,我该如何实现这个

if [ $2 == ..../abc.txt ]

谢谢, Ruchir

4 个答案:

答案 0 :(得分:4)

  

Let suppose the the user inputs the file name as /usr/test/abc.txt which comes in second positional parameter in my script

     

I want to make below statement as true how can I achieve this

使用if

使用此shell glob条件
if [[ "/$2" == *"/abc.txt" ]]; then
    echo "valid match"
fi

答案 1 :(得分:1)

您可以使用basename获取文件名的最后一个组件。

prompt> cat foo.sh
#!/bin/sh

if [ "abc.txt" == `basename $2` ]; then
    echo "found .../abc.txt"
fi

prompt> foo.sh foo /a/b/c/abc.txt
found .../abc/txt

答案 2 :(得分:0)

if [[ $2 == *"/abc.txt" ]]; then
   echo "It ends with abc.txt";
fi

此处解释了为什么[[ ]][ ]相比有效...

"[ ]" vs. "[[ ]]" in Bash shell

答案 3 :(得分:0)

你可以这样做:

if ( echo "$2" | grep 'abc.txt$' >/dev/null ) ; then ... ; else .... ; fi

if ( echo "$2" | grep '/abc.txt$' >/dev/null ) ; then ... ; else .... ; fi

(如果你还需要“/”那么?)