test123
ハードドライブ上のすべてのテキストファイルから文字列を取得する方法はありますか?
答え1
find
以下を使用してすべての.txt
ファイルをgrep
取得できます。
$ find / -type f -name '*.txt' -exec grep 'test123' {} +
どこ:
/
すべてのサーバーで検索してください。-type f
ディレクトリは検索せずにファイルのみを検索します。-name '*.txt'
すべての.txt
ファイルを検索-exec grep 'test123'
test123
見つかったすべてのファイルを検索{}
単一の引数だけでなく、コマンド引数に現れるたびに現在のファイル名に置き換えられます。+
実行時間が大幅に短縮されます(実行前にパラメータを連結するため)。
答え2
「すべてのテキストファイル」は、.txt で終わるすべてのファイルを意味すると仮定します。
find / -type f -name '*.txt' -exec grep -i 'test123' {} \;
または
find / -type f -name '*.txt' -exec grep -i 'test123' {} +
答え3
find / -type f -exec grep -I test123 {} +
+
代わりに使用するバージョンははるかに\;
高速で-I
バイナリを無視します。あるいは、単に再帰的なgrepを使用してください。
grep -Ir test123 /
2>/dev/null
「Permission Denied」行がたくさんあるため、この操作も実行できます。
答え4
正しい方向を知らせる内容:
find / -type f -name *.txt
ハードドライブが1つしかないとし、すべての.txtファイルを探します。次に、grep
そのファイル内で検索を使用します。