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


118

Macbookでファイル名のファイルを検索したい:abc.dmg。スポットライトを使用しようとしましたが、見つかりません。findを試して使用したときに、find -name abc.dmg -path /エラーが返されました。

Mac OSX端末でfindコマンドを使用してファイル名でファイルを検索するための適切な構文は何ですか?


1
@VxJasonxV Appleの質問はスーパーユーザー向けのトピックで100%であり、Appleの質問をすべてそこに移動する必要はありません。ただし、iPhoneまたはiPadの質問は、必要に応じて/移動されます。
BinaryMisfit

これはトピックから外れている理由ではありませんが、この一般的なテーマにさらに具体的なトピック/サイトがあるという事実です。
VxJasonxV

@Diago:メタまたはチャットでこれに関する議論はありましたか?AFAIK apple.SEのベータ版は間もなくリリースされるので、同じページに全員を参加させてください。
ロバートSチャシオ

1
@calavera。ここではかなり古い議論が関連しています。Apple SE、Ubuntu SE、およびLinux SEはすべてスーパーユーザーを称賛するためにありますが、ユーザーを強制的に移動させたくはありません。私は3つの異なるオペレーティングシステムを使用しているため、AppleよりもこちらでAppleに質問することを好みます。非常に具体的な質問がある場合は、より専門的なサイトで質問します。
BinaryMisfit

回答:


163

最も単純な形式でfindは、1つのパラメーター:パスを取ります。実際に有用な形式では、パスをたどり、その後に基準を絞り込みます。

したがって、以下が必要です。

  • find (プログラム)
  • / (パス)、および
  • -name abc.dmg (基準)。
find / -name abc.dmg

12
ドライブ全体を検索すると、アクセス許可が拒否されたタイプのエラーが表示される場合がありますが、ファイルが制限されたフォルダーにあると予想される場合を除き、無視できます。そう使用している場合はsudoを見つける/ -name abc.dmg
クリス・ナバ

試しましたが、結果はありませんでした。
SPRBRN

6
おそらく、お使いのコンピューターにabc.dmgという名前のファイルはありません。-nameの代わりに-inameを使用して、検索で大文字と小文字を区別しないようにすることができます。「abc.dmg」を実際に検索しているのではないかと疑っています。その(おそらく)事実を考えると、実際の詳細がなくても問題が何であるかを伝えるのは困難です。
VxJasonxV

2
@rxt:それを見つけるdooesn't見つけた場合、それは...ありません
ロバート・S Ciaccio

5
OPレポートは、質問テキストで検索を試してみましたことを考えると、それは注目に値すると引数の順序find 事項。する必要がありますfind [path]+ [selection, grouping, and actions]
dmckee

23

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



6

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

locate abc.dmg

2
osxタグに注意してください。デフォルトでは、slocate dbは生成されません。
VxJasonxV

データベースを作成した後、試してみましたが、結果はありませんでした。
SPRBRN

場合locatemdfindの両方が失敗し、チャンスは、ファイルがマシン上にないです。または、その名前がどう思うかという名前が付けられていません。おそらくすべてのDMGを検索することがあなたの次のステップかもしれません。
ピールマン

3

最も簡単な方法(既に試したことはあると思いますが、とにかくスレッドに追加してみましょう)は、任意のファインダーウィンドウの右上にある検索ボックスにabc.dmgと入力し、[ファイル表示される検索バーのオプションから「名前」を選択します。

端末は必要ありません。

また、SpotlightはSpotlightコントロールパネルで指定されたディレクトリのみをインデックス化し、abc.dmgはこれらのディレクトリのいずれかにない場合があることに注意してください。

私が間違っている場合は修正しますが、findコマンドは出力するものを知る必要があると思います:

find / -name abc.dmg -print

...結果を端末に出力する必要があります(許可エラーを含む)。

許可エラーが望ましくなく、他のユーザーディレクトリを検索する場合:

sudo find / -name abc.dmg -print

2

次のコマンドライン関数を使用して、関連するファイルをすばやく見つけて開くことができます。これは、スポットライトウィンドウに長い文字列のクエリを入力するよりも簡単です。

に次の関数を追加します~/.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、FrédéricとFrEDericの両方を返します。

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


驚くばかり!静止:D
Atcold

0

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

sudo find / &> ~/file-list.txt
sudo chown $(whoami) ~/file-list.txt

grepを使用してファイル全体をcatし、ドライブ全体を検索します。

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

...等。残念ながら、マウントされたすべてのディスクもキャプチャするため、多くのリンクがあるTime Machineのディスクを取り出すのが最善です。だから、私が実行する別のウィンドウ watch tail -n 10 ~/file-list.txtで、私の卑劣なハックでそれがどこにあるのかを示します!


1
悪い習慣やコメントに値するもの:(1)sudo find / > ~/file-list.txtシェル全体をルートとして実行するよりも良いようです。(2)のfind *非表示(ドット)オブジェクト(存在する場合)をスキップし/ます。(3)&>はバシズムです。(4)の無駄な使用cat。(5)grep abc.dmgは印刷します/foo/bar/123abcXdmg456/baz/whatever。//このスレッドにあなたの答えがもたらす良い点の1つは(そして他の答えはそうではありません)、ユーザーがfind1回実行し、ファイルシステムを何度も照会せずに保存された結果を複数回再利用するアプローチです。ただし、この潜在的な利点は強調されていません。
カミル・マチオロフスキ

良い点はカミルに感謝します、そしてそれをし、また$(whoami)
戸町
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.