検索コマンドで大文字と小文字を無視する

検索コマンドで大文字と小文字を無視する

findコマンドを使用して2つの異なるディレクトリにあるファイルを検索したいと思います。

find $file_dir1 $file_dir2  -name 'searchpattern*' | tail -10

今このコマンドを使用していますが、大文字と小文字を区別して検索します。私はそれを試しましたが、-iname私のLinuxコンピュータはそれをサポートしていません。大文字と小文字を無視してすべてのファイルを一覧表示する必要があります。

ベストアンサー1

find "$file_dir1" "$file_dir2" \
  -name '[sS][eE][aA][rR][cC][hH][pP][aA][tT][tT][eE][rR][nN]*'

つまり、xlike 文字を or と一致する括弧式で置き換え、大文字と小文字を区別する小文字の一致を大文字と小文字を区別しない一致で効果的に置き換えます。[xX]xXxx

単一文字ではなく大文字または小文字の翻訳などの一部の文字では、次の方法を使用する必要があります。

find "$file_dir1" "$file_dir2" \
  \( -name '*[sS][uU]ffi[xX]' -o -name '*[sS][uU]FFI[xX]' \)

または代わりに、またはと[ffiFFI]一致します。FIFFI

ファイル名とディレクトリ名に改行文字が含まれていないことを保証できる場合は、find各ファイルパスを印刷してawkファイル名でフィルタリングすることもできます。

find "$file_dir1" "$file_dir2" |
  awk -F/ 'tolower($NF) ~ /^searchpattern/'

toupper($NF) ~ /^SEARCHPATTERN/(上記と必ずしも同じではありません。)または、すべてのロケールのすべての人が文字の大文字または小文字のバリエーション(たとえば、大文字i Iまたはİ?)に同意しないためです。grep -i区別するマッチングツールまたは他のツール)。

おすすめ記事