ZSHの否定的なワイルドカード

ZSHの否定的なワイルドカード

ls **/*!(test).rb「test」で終わらないすべてのRubyファイルに拡張しようとしています。しかし、これまで試したことは何も役に立ちませんでした。 ZSHの拡張グロービングオプションをオンにしようとしましたが、成功しませんでした。

同様のことができることを知っていますが、ls -l **/*.rb | grep -v testワイルドカードのみを使用して実行したいと思います。

答え1

setopt extended_glob; ls -d -- **/(^*test).rb

または

setopt ksh_glob; ls -d -- **/!(*test).rb

バージョン()とは異なる形式もファイル名の一部と一致し、否定は空の文字列と一致するため、*!(test).rbそれとも一致します。foo-test.rb*foo-test!(test)


「ksh-glob」形式は、でも動作しますbashshopt -s globstar extglob

#! /bin/bash
shopt -s globstar extglob
ls -d -- **/!(*test).rb

Bashでは、と拡張モードの使用の間に改行文字が必要です。2shopt -s extglobつは同じ複合コマンドまたは関数の一部ではない場合があります。

関連情報