3

Я хочу удалить каталог /lib внутри apk файлов. Мне удалось сделать это с:

for DIR in ~/ABC ~/ABD 
 do
  cd $DIR
   for APK in *
    do
     if test -f "$APK"
      then
       zip -d $APK /lib*
     fi
   done 
done

Теперь я хочу исключить файлы, которые имеют vvs или tita в имени файла. Я действительно понятия не имею, как это сделать.

2 ответа2

2

-x file|directory|list - ваш ключ

zip -d $APK /lib* -x *vvs* *tita*

Из справочных страниц:

   -x files
   --exclude files
          Explicitly exclude the specified files, as in:

                 zip -r foo foo -x \*.o

          which  will  include the contents of foo in foo.zip while excluding
          all the files that end in .o.  The backslash avoids the shell filename
          substitution, so that the name matching is performed by zip at all
          directory levels.

          Also possible:

                 zip -r foo foo -x@exclude.lst

          which will include the contents of foo in foo.zip while excluding all
          the files that match the patterns in the file exclude.lst.

          The long option forms of the above are

                 zip -r foo foo --exclude \*.o

          and

                 zip -r foo foo --exclude @exclude.lst

          Multiple patterns can be specified, as in:

                 zip -r foo foo -x \*.o \*.c

          If there is no space between -x and the pattern, just one value is
          assumed (no list):

                 zip -r foo foo -x\*.o

          See -i for more on include and exclude.
0

Добавьте внутренний оператор if, который использует один из этих подходов, чтобы определить, содержит ли $ APK строки 'vvs' или 'tita'

https://stackoverflow.com/questions/2829613/how-do-you-tell-if-a-string-contains-another-string-in-unix-shell-scripting

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .