Найдите ресурс, в котором отсутствует OSX

В bash вы можете расширить команду, выполнив следующие действия:

history -p !23 

Итак, если в 23 у вас есть ls -l the, возврат будет:

ls 
-l 

В zsh я могу воспроизвести подобное (, но не идентичное )поведение, сделав это:

history 23 23 | xargs -n1 | tail -n+2
2
05.06.2021, 19:07
2 ответа

Использование квалификаторов zsh glob , предполагая, что пакеты являются каталогами.

Во-первых, вот как искать каталоги пакетов в любом месте текущего каталога:

print -rC1 -- **/*.bundle(/N)
  • **/…соответствует файлам во вложенных подкаталогах.
  • (/)ограничивает совпадения каталогами.
  • (N)приводит к пустому списку вместо ошибки, если совпадений нет.

Затем отфильтруйте результаты, чтобы сохранить только пакеты без PNG_.zipв любом месте:

print -rC1 -- **/*.bundle(/Ne['()(($#==0)) $REPLY/**/PNG_.zip(NDY1)'])
  • (e['…'])фильтрует совпадения, :сохраняются только те, для которых выражение истинно. Код выполняется для каждого совпадения по очереди, при этом для совпадения устанавливается $REPLY.
  • ()(($#==0)) …проверяет, расширяется ли до списка слов с длиной 0, т.е. если(как список слов )пуст.
  • (Y1)— это оптимизация, позволяющая прекратить обход каталога, как только будет найдено 1 совпадение.(D)(dotglob)также должен искать PNG_.zipфайлы в скрытых подкаталогах каталогов пакетов.
3
28.07.2021, 11:26

Верю:

   $ find. -type f \(  ! -iname "*PNG_.zip*" \)

Делает свое дело. ! оператор инвертирует шаблон поиска. Таким образом, вы получаете все файлы, которые не соответствуют ему.

0
28.07.2021, 11:26

Теги

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