特定のファイル タイプのファイルをディレクトリ構造で再帰的に検索したいと考えています。しかし、外部ファイルからファイル タイプを渡す必要があります。出力は、各行がファイルへの絶対パスであるリストである必要があります。出力をさらに処理するために使用します。ファイルタイプのリストである外部ファイルは、たとえば次のようになります (filter.lst):
*.properties
私はこれを試しました(searchfiles.sh):
while read line
do
echo "$(find $1 -type f -name $line)"
done < $2
スクリプト内の echo コマンドは、テストのみを目的としています。私はスクリプトを実行しました:
./searchfiles.sh test_scripting filter.lst
find コマンドのエコーの出力が空でした。なんで?コマンドが正しくビルドされ、ファイル *.properties が存在するかどうかをテストするために、次の方法でスクリプトを変更しようとしました。
while read line
do
echo "find $1 -type f -name $line"
echo "$(find $1 -type f -name $line)"
done < $2
出力があります:
./searchfiles.sh test_scripting filter.lst
find test_scripting -type f -name *.properties
手動で「find test_scripting -type f -name *.properties」をコピーしてシェルに貼り付けると、ファイルが正しく検出されます。
find test_scripting -type f -name *.properties
test_scripting/dir1/audit.properties
test_scripting/audit.properties
test_scripting/dir2/audit.properties
「検索」コマンドが変数を正しく処理しないのはなぜですか?