web-dev-qa-db-ja.com

Mac OSXターミナルでファイルをファイル名で検索するにはどうすればいいですか?

私のMacbook上で、abc.dmgというファイル名でファイルを探したいです。私はspotlightを使おうとしました、しかしそれはそれを見つけません。検索して使用したとき:find -name abc.dmg -path /、エラーが返されました。

Mac OSX端末でfindコマンドを使用してファイル名でファイルを見つけるための正しい構文は何ですか?

106
SPRBRN

最も簡単な形式では、findは1つのパラメータ、パスを取ります。実際に便利な形式では、パスをたどって絞り込みます。

したがって、あなたは欲しい:

  • find(プログラム)
  • /(パス)
  • -name abc.dmg(基準).

find / -name abc.dmg

143
VxJasonxV

例えばfind . -name '*.csv'はワイルドカードを使って私のために働きました。 OPはfind . -name '*.dmg'にいると仮定して、/を使用して現在のディレクトリをチェックすることもできます。

20
pjammer

mdfindコマンドはSpotlightデータベースを使用します

http://developer.Apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/mdfind.1.html

7
Rich Homolka

locateコマンドを使用できます。

locate abc.dmg
6
Wuffers

最も簡単な方法は(あなたがすでに試したことは間違いないが、とにかくそれをスレッドに追加させてください)、Finderウインドウの右上にある検索ボックスにabc.dmgを入力してから「File」を選択することです表示される検索バーのオプションから ""と名前を付けます。

端末は必要ありません。

また、SpotlightはSpotlightコントロールパネルで指定されたディレクトリのみをインデックス付けし、abc.dmgはそれらのディレクトリのいずれにも含まれていない可能性があります。

私が間違っていたら私を訂正しなさい、しかし私はfindコマンドが何を出力すべきかを知る必要があると思います:

find / -name abc.dmg -print

...(パーミッションエラーを含む)すべての結果を端末に表示します。

あなたがパーミッションエラーを望まず、他のユーザーディレクトリを検索したいのであれば:

Sudo find / -name abc.dmg -print
3
Jupiter

関連ファイルを素早く見つけて開くには、次のコマンドライン機能を使用します。 Spotlightウィンドウに長い文字列のクエリを入力するよりも簡単です。

~/.bash_aliasesに以下の関数を追加してください。

# find any item matching search query in file name
spot(){
  mdfind "kMDItemDisplayName=='*$1*'cd";
}

# restrict to files under (recursive) a specific path 
findpaper(){
    mdfind -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd";
}

# default to open the first entry unless 2nd positional argument is given
openpaper(){
    FILEID=$(printf "%sp" ${2:-1})

    open "$(mdfind -name -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd" | sed -n "${FILEID}")"

}

今、source ~/.bash_aliasesまたは新しい端末ロード関数を開きます。ファイル名の任意の場所に単語、円グラフ、および2016を含むファイルを検索するには、次のようにします。

spot pie*2016 #or
spot 2016*pie

検索パターンとしてクエリの前に*を追加したり追加したりする必要はありません。'*$1*'は、クエリの最初と最後に既にワイルドカードエントリをタグ付けしています。追加のcdは大文字と小文字を区別せず発音区別符号を無視するためのもので、例えばfredはフレデリックとフレデリックの両方を返します。

findpaperは検索を特定のパス(再帰的)の下の結果に制限しますが、openpaper pie*201は(または複数の結果のうちの最初の)検索結果を開くか、openpaper pie*201 3は3番目の結果エントリを開きます。 bashスクリプトやその他の非ドキュメントファイルを開かないようにするために、追加の検索属性によってファイルの内容を制限することができます。他の検索演算子の使用方法については、 ファイルメタデータクエリ式の構文 および https://ss64.com/osx/mdfind.html を参照してください。

1
Samir

ルートシェルに切り替えます(ファイルを作成するためだけに必要です)

Sudo su

/からディスク上のすべてのファイルのリストをキャプチャします。

cd /
find * &> file-list.txt

ドライブ全体を検索するには、grepでファイル全体を検索します。

cat /file-list.txt | grep abc.dmg

.jpgファイルと.dmgファイルのみを表示するには、正規表現を使用します。

cat file-list.txt | grep -E "(\.dmg|\.jpg)"

結果:

Applications/Visualisations/CurvedSpaces-forMac.app/Contents/Resources/Textures/paper.jpg

...等

0
Tomachi