ファイルの行を繰り返して各行に一致するファイルを見つけるにはどうすればよいですか?

ファイルの行を繰り返して各行に一致するファイルを見つけるにはどうすればよいですか?

BASHシェルからファイルの行を取得したいです(例:パターン.txt)名前にファイルの各行にパターンが含まれているファイルを自分のシステムで見つけます。だから私は次のforループを持っています:

for pp in `cat pattern.txt`; do find ./ -iname "*${pp}*" -print0; done

最初の行が次のような場合、ファイルが見つかりません。パターン.txt存在します。それでは、上記のコマンドラインを修正する方法は?

注:ファイル内の各行には[a-zA-Z]文字のみが含まれています。

ベストアンサー1

これは、ファイルから検索された複数のファイル名パターンを見つけるための安全なWindows保護されていません。私が選んだのは、パターンリストを式として扱うことでしたfind

find_expression=$(<pattern \
    sed -e 's/^/-o\n-iname\n*/' \
        -e 's/\r\?$/*/' |            # turn each pattern into -o -iname *foo*
    tail -n +2)                      # remove spurious initial -o
set -f                               # turn off globbing
IFS='
'                                    # split only at newlines
find . \( $find_expression \) -print0
set +f; unset IFS                    # restore defaults

おすすめ記事