
qc_dl
で始まらない、またはqc_dt
でqd_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