Что касается сценария оболочки Unix - PullRequest
0 голосов
/ 30 марта 2010

Я хочу получить файл из каталога 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 ]

2 голосов
/ 30 марта 2010
for name in "$infile"{BBSCGG_,BCT_,ACL_,ASC}*
do
  ....
done
1 голос
/ 30 марта 2010

Возможно, вы захотите взглянуть и на команду «найти», если подкаталоги существуют. Сначала проверьте это .

1 голос
/ 30 марта 2010
#!/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
0 голосов
/ 30 марта 2010
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...