2010-12-28 17:42:34 +0000 2010-12-28 17:42:34 +0000
133
133

Mac OSXターミナルでファイル名でファイルを見つける方法を教えてください。

Macbookでファイル名: abc.dmgのファイルを見つけたいのですが、どうすればいいでしょうか?スポットライトを使ってみましたが、見つかりません。findを使ってみて、: find -name abc.dmg -path /を使ってみたら、エラーが返ってきました。

Mac OSXターミナルでfindコマンドでファイル名でファイルを探すには、どのような構文が適切でしょうか?

回答 (7)

182
182
182
2010-12-28 17:45:50 +0000

最も単純な形では、findは1つのパラメータ、つまりパスを取ります。実際に有用な形式では、パスの後に絞り込み条件が続きます。

このように、

  • find (プログラム)
  • / (パス)
  • -name abc.dmg (条件) が必要となります。
26
26
26
2016-10-27 14:11:10 +0000

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

10
10
10
2010-12-28 19:21:39 +0000

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

6
6
6
2010-12-28 17:44:14 +0000

locateコマンドが使えます。

locate abc.dmg
3
3
3
2010-12-28 22:53:12 +0000

一番簡単な方法は(すでに試したことがあると思いますが、スレッドに追加させてください)、ファインダーウィンドウの右上の検索ボックスに abc.dmg と入力し、表示される検索バーのオプションから “File Name” を選択することです。

ターミナルは必要ありません。

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

find / -name abc.dmg -print

…ターミナルに任意の結果を印刷する必要があります (パーミッション エラーを含む)。

2
2
2
2018-02-09 04:28:07 +0000

以下のコマンドライン関数を使うと、関連するファイルを素早く検索して開くことができます。スポットライトウィンドウで長いクエリの文字列を入力するよりも簡単です。

# 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}")"

}

さて、~/.bash_aliasesに以下の関数を追加します。ファイル名の任意の場所に単語、パイ、2016を含むファイルを検索するには、

spot pie*2016 #or
spot 2016*pie

を行います。 検索パターンとしてのクエリに source ~/.bash_aliases を前置したり、追加したりする必要はありませんが、* はすでにワイルドカードエントリをクエリの最初と最後にタグ付けしているので、クエリの最初と最後に追加します。追加の'*$1*'は大文字小文字を区別せず、ダイアクリティカルマークを無視するためのもので、例えば、cdはFrédéricとFrEDericの両方を返します。bash スクリプトやその他の非文書ファイルを開かないようにするために、追加の検索属性でファイルの内容を制限することができます。他の検索演算子の使用法については、ファイルメタデータクエリ式構文および https://ss64.com/osx/mdfind.html を参照してください。

0
0
0
2019-06-09 11:50:48 +0000

から/

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

からrootとしてディスク上のすべてのファイルのリストをキャプチャする ドライブ全体を検索するために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

…など。不運にもすべてのマウントされたディスクをキャプチャしますので、それらのタイムマシンのものを排出するために最善の彼らは多くのリンクを持っています。そう別の窓で私はそれが私の卑劣なハックでどこまであるか私に示すwatch tail -n 10 ~/file-list.txtを動かす!