私のMacbook上で、abc.dmg
というファイル名でファイルを探したいです。私はspotlightを使おうとしました、しかしそれはそれを見つけません。検索して使用したとき:find -name abc.dmg -path /
、エラーが返されました。
Mac OSX端末でfindコマンドを使用してファイル名でファイルを見つけるための正しい構文は何ですか?
最も簡単な形式では、find
は1つのパラメータ、パスを取ります。実際に便利な形式では、パスをたどって絞り込みます。
したがって、あなたは欲しい:
find
(プログラム)/
(パス)-name abc.dmg
(基準).find / -name abc.dmg
例えばfind . -name '*.csv'
はワイルドカードを使って私のために働きました。 OPはfind . -name '*.dmg'
にいると仮定して、/
を使用して現在のディレクトリをチェックすることもできます。
mdfind
コマンドはSpotlightデータベースを使用します
http://developer.Apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/mdfind.1.html
locate
コマンドを使用できます。
locate abc.dmg
最も簡単な方法は(あなたがすでに試したことは間違いないが、とにかくそれをスレッドに追加させてください)、Finderウインドウの右上にある検索ボックスにabc.dmgを入力してから「File」を選択することです表示される検索バーのオプションから ""と名前を付けます。
端末は必要ありません。
また、SpotlightはSpotlightコントロールパネルで指定されたディレクトリのみをインデックス付けし、abc.dmgはそれらのディレクトリのいずれにも含まれていない可能性があります。
私が間違っていたら私を訂正しなさい、しかし私はfindコマンドが何を出力すべきかを知る必要があると思います:
find / -name abc.dmg -print
...(パーミッションエラーを含む)すべての結果を端末に表示します。
あなたがパーミッションエラーを望まず、他のユーザーディレクトリを検索したいのであれば:
Sudo find / -name abc.dmg -print
関連ファイルを素早く見つけて開くには、次のコマンドライン機能を使用します。 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 を参照してください。
ルートシェルに切り替えます(ファイルを作成するためだけに必要です)
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
...等