2012年3月20日 星期二

[shell script]check file exist use regex / process file 排除檔案名

[shell script]check file exist use regex / process file

早上zz 在討論一個問題,
他想排除ls 出來的file list 的某些檔案,
使用的是regex。

jar_file="./ggyy-zz.jar"

if [ $jar_file == "~/ggyy-*.jar" ]; then
echo "ok"
fi

filenames=`ls -a`
if [ -e ./ggyy-*.jar ] ; then
echo 'zzz '
fi

for fn in $filenames
do
echo $fn
if [ $fn != "ggyy-*.jar" ] ; then
echo 'zzz '$fn
fi
done

echo 'zzzzzzz\n'

for fn in $filenames
do
if [[ "$fn" =~ ggyy-(.*).jar ]] ; then
echo 'zzz '$fn
fi
done

最後這個寫法才是正確的。
另外也可以在ls那邊就解決問題,
使用,

ls -a | grep -v -e "ggyy\*.jar"
在ls階段就解決這個問題

ref
bash regex =~ case insensetive, possible? - The UNIX and Linux Forums
http://www.unix.com/shell-programming-scripting/110312-bash-regex-case-insensetive-possible.html
Bash in-process regular expressions
http://aplawrence.com/Linux/bash-regex.html

沒有留言:

張貼留言