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」形式は、でも動作しますbash
。shopt -s globstar extglob
#! /bin/bash
shopt -s globstar extglob
ls -d -- **/!(*test).rb
Bashでは、と拡張モードの使用の間に改行文字が必要です。2shopt -s extglob
つは同じ複合コマンドまたは関数の一部ではない場合があります。