关于Unix shell脚本

时间:2010-03-30 01:28:06

标签: unix shell

我想从INFILE目录中检索文件名前缀为“BBSCGG”或“BCT_”或“ACL_”或“ASC”的文件,并在for循环中进行处理

INFILE=/ext/test/fil1/

for infile name in file prefix

...  if [[ -f ${fspec} ]] ; then

            processing logic

     else
            processing logic
done  

我该怎么做

4 个答案:

答案 0 :(得分:2)

for name in "$infile"{BBSCGG_,BCT_,ACL_,ASC}*
do
  ....
done

答案 1 :(得分:1)

#!/bin/ksh

flag=0
set -o braceexpand
for file in {BBSCGG_,BCT_,ACL_,ASC_}*
do
  if [ -f "$file" ];then
     # do your stuff if there are files
     flag=1
  fi
done
if [ "$flag" -eq 0 ];then
    echo "warning. empty"
fi

答案 2 :(得分:1)

如果存在子目录,您可能也想查看“find”命令。首先检查this

答案 3 :(得分:0)

ls -1 $INFILE/{BBSCGG_,BCT_,ACL_,ASC}* |while read FILE; do
  # $FILE holds full pathname of each prefixed file.
  # mmk go ...
done

如果您想要$INFILE下的中的所有文件,请使用find而不是ls

find $INFILE -name BBSCGG_\* -o \
-name BCT_\* -o \
-name ACL_\* -o \
-name ASC\* |while read FILE; do
  # kthx
done