2017-02-22 6 views
-1

最初にライブラリに文字列を持たないファイルを探す必要があります。結果のファイル名のうち、文字列を含むファイルを検索する必要があります。文字列のないディレクトリ(パテ環境上)のファイルを探します

まず、コマンドラインでgrep -Lを試しましたが、うまくいきません。 私はUNIXには新しく、誰でもこのロジックを構築するのに助けてください。

ありがとうございます!

+0

***してください***読みhttp://stackoverflow.com/help/how-to-ask http://stackoverflow.com/help/dont-askて、http://のstackoverflow .com/help/mcveよりQを投稿する前に。がんばろう。 – shellter

+0

誰かがこの1つの上でビューを共有することができます、私はここにこだわってきました、ありがとう! – Rhea

答えて

0

検索するには、いくつかのアイデアとcmdsがあります。

(あなたの問題の説明は私には不明であるので、私はあなたが求めている最も可能性の高いソリューションのように思えるものをあなたに与えている)。..

テストファイルを考えると

echo "a 
b 
c 
d" > /tmp/testFile.txt 

することができます

を返します
grep d /tmp/testFile.txt ; echo $? 

とそのファイル内の「言葉」(または文字)を検索

0は、正常に実行されたcmdを示し、1(またはその他の非ゼロ値)は、エラーが発生したことを示します。で見つかりませんでしたeためだけ

1 

grep -l e /tmp/testFile.txt ; echo $? 

リターン:

は今、指定されたオプションの要件を満たす「リスト」のファイルを言う grep-lオプションを追加しますファイル、その名前は印刷されませんでした。

grep -l d /tmp/testFile.txt ; echo $? 

/tmp/testFile.txt 
0 

は、検索対象が見つかったことを示すように対照的に

は、ファイルに存在しない文字列を検索すると検索します。


今、あなたはgrepの上で検索するすべてのファイルのリストを取得する方法が必要、

cd /path/to/starting/dir/to/search # you know what to put here, right? 
find . -name '*.txt' 

は、現在のディレクトリとすべてのサブディレクトリ内のすべての.txtファイルのリストを生成します現在のディレクトリ。

最後に、あなたはあなたのターゲット文字列は、これはあなたのニーズを満たしていないだろう。もちろん、

srchStr="e" 
cd /path/to/starting/dir/to/search # you know what to put here, right? 
find . -name '*.txt' \ 
| while read file ; do 
    if ! grep -q "$srchStr" "$file" ; then 
     echo "no $srchStr in $file" 
    fi 
done 

が存在するかどうかをチェックすることができ、ループに.txtファイルのリストを供給することができます。しかし、いくつかのコードで新しいQを投稿してください。他の人があなたを助けることができます。私はこれにもっと時間を費やすことはできません(いつでもすぐに)。 unix findのチュートリアルを探してください。これは、すべてのファイルを一覧表示するための鍵となるため、grepで検索することができます。

IHTH

関連する問題