特定のプレフィックスで始まらないファイルのリスト

特定のプレフィックスで始まらないファイルのリスト

qc_dlで始まらない、またはqc_dtqd_df始まるディレクトリだけをリストします.sas

次のように、「qc_dl」で始まらないファイルを一覧表示できます。

ls -I "qc_dl*" 

しかし、結果リストからSASプログラムのみを選択する方法がわかりません。

また、次のように、「qc_dl」、「qc_dt」、または「qd_df」で始まるすべてのSASファイルを選択できます。

ls qc_d{l,t,f}*.sas

ただし、これら2つのコマンドを組み合わせてから始まらないファイルだけをリストすることはできませんqc_dl/t/f

答え1

代わりに使用しますかfind

find /my/example/dir -type f -name '*.sas' ! -name 'qc_d[ltf]*'

答え2

メンズバッシュから:

組み込みのshoptを使用してextglobシェルオプションを有効にすると、複数の拡張パターン一致演算子が認識されます。以下の説明では、パターンリストは、 | で区切られた 1 つ以上のパターンのリストです。複合パターンは、次のサブパターンのうちの1つ以上を使用して形成できます。

         ?(pattern-list)
                 Matches zero or one occurrence of the given patterns
          *(pattern-list)
                 Matches zero or more occurrences of the given patterns
          +(pattern-list)
                 Matches one or more occurrences of the given patterns
          @(pattern-list)
                 Matches one of the given patterns
          !(pattern-list)
                 Matches anything except one of the given patterns

この機能を有効にすると、より強力なパターンマッチングを使用できます。

開いてみてください:

~$ shopt -s extglob

.sasその後、次に終了または起動しないファイルを一覧表示できますqc_d

~$ ls
a.sas  a.txt  b.sas  b.txt  c.sas  c.txt  qc_dc.sas  qc_df.sas  qc_dl.sas  qc_dt.sas
~$ ls !(qc_d*).sas
a.sas  b.sas  c.sas

オフにするには:

~$ shopt -u extglob

答え3

ファイル名に改行文字が含まれておらず、次から始まらないとします.

ls -d -- *.sas | grep -v '^qc_d[ltf]'

.sas で終わるファイルをリストし、qc_dl、qc_dt、qc_df 以外のすべてのファイルをフィルタリングします。

フィルタリングが必要な場合はgrepが役立ちます。

答え4

ls -d [![.qc_dl.][.qc_dt.][.qd_df.]]*.sas

注「マン7グローブ」
[!...] -> このクラスに属さないすべてのもの、grep または正規表現の [^...] と同じ
[.qc_dl.] -> `qc_dl`内部を正確に処理するための正確なモード
文字や範囲の代わりにクラスが発生します。  

シナリオ:こんにちは、Mr。 Shell、開始されていない項目をすべてリストしてください。
「qc_dl」、「qc_dt」、または「qd_df」にありますが、どちらか一方でも終了する場合
.sasを使用すると、リストを一覧表示できます。

実験:
$touchqc_dloooooooo.sas
$touch qc_dloooooooo
$touchqc_dtfffghhjh.sas
$touchqc_dtfffghhjh
$touchcvvvbkkk
$touchcvvvbxcvvcxv
$ ls -d [![.qc_dl.][.qc_dt.][.qd_df.]]*.sas
qc_dloooooooo.sas qc_dtfffghhjh.sas

関連情報