Не удается получить обновления или завершить обновление после прерванной установки 12.04

FWIW похоже, что вы можете сделать это изначально в zsh, используя квалификатор glob (+cmd).

Чтобы проиллюстрировать, давайте начнем с некоторых файлов

 % ls
bar  baz  bazfoo  keepfiles.txt  foo  kazoo

и файл белого списка

 % cat keepfiles.txt
foo
kazoo
bar

Сначала прочитайте белый список в массив:

 % keepfiles=( "${(f)$(< keepfiles.txt)}" )

или, возможно, лучше

 % zmodload zsh/mapfile
 % keepfiles=( ${(f)mapfile[./keepfiles.txt]} )

(эквивалент bash's mapfile - или его синоним readarray). Теперь мы можем проверить, существует ли в массиве ключ (имя файла) с помощью ${keepfiles[(I)filename]}, который возвращает 0, если совпадение не найдено:

 % print ${keepfiles[(I)foo]}
1
 % print ${keepfiles[(I)baz]}
0
 %

Мы можем использовать это, чтобы создать функцию, которая возвращает true если в массиве нет совпадений для $REPLY:

% nokeep() { (( ${keepfiles[(I)$REPLY]} == 0 )); }

Наконец, мы используем эту функцию в качестве определителя в нашей команде:

 % ls *(+nokeep)
baz  bazfoo  keepfiles.txt

или, в вашем case

 % rm -- *(+nokeep)

(Вероятно, вы захотите добавить имя белого списка в белый список.)

3
задан 14 March 2012 в 14:38

0 ответов

Другие вопросы по тегам:

Похожие вопросы: