ファイル名で指定された文字列と一致しないファイルのリスト

ファイル名で指定された文字列と一致しないファイルのリスト

temp_log.$$確認する必要がある他のいくつかの重要なファイルとともに、その名前を持つ多くのファイル(約200個)が生成されるディレクトリがあります。

temp_log.$$すべてのファイルを簡単に一覧表示し、表示されたファイルを除外する方法は?

期待される出力

$ ls -lrt <exclude-filename-part>
-- Lists files not matching the above given string

lsマニュアルページを見ましたが、この参考資料には何もありません。ここで重要な情報を見逃した場合はお知らせください。

ありがとう

答え1

GNU ls(組み込みのLinuxおよびCygwinのバージョン、時には他の場所でも見つかるバージョン)を使用すると、ディレクトリを一覧表示するときに特定のファイルを除外できます。

ls -I 'temp_log.*' -lrt

-I(isの長い形式に注意してください--ignore='temp_log.*'

zsh を使用すると、シェルにフィルタリングを実行させることができます。一致するディレクトリの内容を一覧表示したくない場合は、を渡してください-dls

setopt extended_glob          # put this in your .zshrc
ls -dltr ^temp_log.*

ksh、bash、またはzshを使用すると、kshフィルタ構文を使用できます。 zshでsetopt ksh_glob最初に実行します。 Bashでは、shopt -s extglobまず実行してください。

ls -dltr !(temp_log.*)

答え2

grepオプションと一緒に使用できます-v

ls -lrt | grep -v <exclude-filename-part>

答え3

次の目的で使用できますfind

find . \! -name 'temp_log*'

これは、タイムスタンプと特権付きのスタイル付き出力を-ls作成するために追加できる名前のみを印刷したり、列、並べ替えなどに必要なオプションとともに実際にlsに渡すために追加できます。ls -l-exec ls {} +

私はこれが単にディレクトリにあるファイルであると仮定し、この記事を書いています。ディレクトリに別のディレクトリが含まれている場合は、そのディレクトリを繰り返し表示しないことをお勧めします。

find . \! -name 'temp_log*' -maxdepth 1

lsを使用している場合は、停止するには-dオプションを渡す必要があります。それディレクトリリスト:-exec ls -d {} +

答え4

ただ

ls -ltr `grep -il patterntosearch  *`

関連情報