ターミナルからMacを検索しますか?


22

ターミナルを使用してMacを検索するコマンドはありますか?私はgrepを使って検索しようとしましたが、やや無反応のようで、何も表示されません。

たとえば、「grep Files」(フォルダ名)と入力すると、空白行が出力されるだけで何も起こりません。



あらゆる種類のファイルを検索することに興味があります。必ずしもテキストファイルを除外するわけではなく、テキストファイルだけを除外するわけではありません。
JFW

回答:


21

mdfindSpotlightで検索を実行するためにコマンドを使用することもできます。詳細はこちら

使用しmdfind -name searchtermた名前のファイルを取得するためにsearchtermmdfind searchtermファイル名とコンテンツの検索を実行するために使用します。


25

特定の名前のファイルだけを検索する場合は、使用します find

マニュアルページは、ここから、またはman findターミナルプロンプトで入力して見つけることができます。

基本的に、findは指定した基準を満たすファイルを再帰的に探します。最も簡単な例:

find . -name file_name -print

これは、現在のディレクトリから「file_name」という名前のファイルを検索し、下で検索して、その名前のファイルを印刷します。

find ~ -name ".DS_Store" -delete

これにより、すべての.DS_Storeファイルが検索され、削除されます。

名前、正規表現、日付で検索できます。-exec述語を使用して、Unixの方法でファイルを操作できます。

また、findをアクションのより複雑なパイプラインの開始として使用することもできます。例:

find . -type f -print | egrep -i '\.m4a$|\.mp3$'

拡張子が.m4aまたは.mp3のすべてのファイルを検索します

find . -type f -print | egrep -i '\.m4a$|\.mp3$' | wc -l

それらのファイルの数がわかります。


-printが唯一の述部である場合、省略できます。また、利用可能な単純なグロビングがあります。したがって、すべての発見.txtディレクトリ下のファイルがfooで行われることになるfind foo -name \\*.txt
ノーマングレー

@yoshi:それは絶対に間違っています。find .ISをcwdから再帰的に入力します。find .ルートディレクトリに入力してみてください!
ドリューク

私の悪い人はそれが再帰的ではないことを誓うことができましたが、多分サーバーが詰まった-shrug-
nuala

5

フォルダ全体を検索する場合は、grepで-rを使用します。

grep -r pattern folder/to/search

findでは、xargsも使用できます。

find folder/to/search -name '*.txt' | xargs grep pattern

または、一度に2つのファイルを検索し、ファイル名が指定されていることを確認します。

find folder/to/search -name '*.txt' | xargs grep -n2 pattern

2

grepパターンとfilespecの両方が必要です。欠落している場合、パターンとして渡されたものを使用し、標準入力を介してデータが検索されるのを待ちます。

より複雑なfilespecを使用する場合は、を使用しますfind

find ~ -name '*.txt' -exec grep -q 'secret' {} \; -print

基本的に、コマンドに入力した名前のファイルを検索するだけです。
JFW

その場合、で-exec述語を使用する必要はありませんfind
イグナシオバスケス-アブラムス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.