Mac OSXターミナルでファイル名でファイルを見つける方法を教えてください。
Macbookでファイル名: abc.dmg
のファイルを見つけたいのですが、どうすればいいでしょうか?スポットライトを使ってみましたが、見つかりません。findを使ってみて、: find -name abc.dmg -path /
を使ってみたら、エラーが返ってきました。
Mac OSXターミナルでfindコマンドでファイル名でファイルを探すには、どのような構文が適切でしょうか?
Macbookでファイル名: abc.dmg
のファイルを見つけたいのですが、どうすればいいでしょうか?スポットライトを使ってみましたが、見つかりません。findを使ってみて、: find -name abc.dmg -path /
を使ってみたら、エラーが返ってきました。
Mac OSXターミナルでfindコマンドでファイル名でファイルを探すには、どのような構文が適切でしょうか?
コマンドは、Spotlight データベースを使用します。
以下のコマンドライン関数を使うと、関連するファイルを素早く検索して開くことができます。スポットライトウィンドウで長いクエリの文字列を入力するよりも簡単です。
# 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 を参照してください。
から/
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
を動かす!