find . -type f -exec sh -c ' if [cat ${1} == "abc" ] then echo ${1} fi' _ {} \;
このエラーが発生しました:
_: -c: line 1: syntax error: unexpected end of file
ここで何をすべきかは次のとおりです。
このディレクトリ内のすべてのファイルを検索し、ファイルの内容が abc の場合はファイル名を出力します。
ありがとうございました !
find . -type f -exec sh -c ' if [cat ${1} == "abc" ] then echo ${1} fi' _ {} \;
このエラーが発生しました:
_: -c: line 1: syntax error: unexpected end of file
ここで何をすべきかは次のとおりです。
このディレクトリ内のすべてのファイルを検索し、ファイルの内容が abc の場合はファイル名を出力します。
ありがとうございました !
「[」の後、「]」および「;」の前にスペースを入れてください。後に ']'
別の方法は使用することです
[ `cat ${1}` == "abc" ] && echo ${1}
ここでの問題は、 (別名「テスト」) を次のようにスペースで[
区切る必要があることです。cat
find . -type f -exec sh -c 'if [ cat ${1} = "abc" ]; then echo ${1}; fi' _ {} \;
if
また、ステートメントの後とステートメントの前にセミコロンがありませんfi
(おそらくインデントした方法が原因で、そこにあったスペースに基づいて、元々これらが別々の行にあったようです)
以下のコメントで指摘されているように、これを実行するとエラー メッセージが表示されますtoo many arguments in if []
。二重引用符を使用"cat ${1}"
すると、エラー メッセージを回避できますが、これは の展開を と比較するだけ"cat ${1}"
です"abc"
。おそらく探しているのは[ "$(cat ${1})" == "abc" ]
. 残念ながら、これは、非常に長いファイルを と比較するときに問題を引き起こす可能性があります"abc"
。
を使用してテストを実行するか、ファイルのgrep
チェックサム (例: ) を取得し、テストを実行する理由に応じて、 のチェックサムに対してテストすることができます。shasum
"abc"