たいのですが、"検索"コマンドOS Xのデフォルトの現在のディレクトリ?
-
10-07-2019 - |
質問
私は重いコマンドラインのユーザーを使用し find
コマンドで広く私的ビルドシステムのためのイントロダクションです。しかしMac OS Xの場合は私に集中させないくらいになると出力のようになります:
$ find -name \*.plist
find: illegal option -- n
find: illegal option -- a
find: illegal option -- m
find: illegal option -- e
find: *.plist: No such file or directory
基本的には、忘れた追加のド:
$ find . -name \*.plist
でBSD find
しを要求する経路およびGNU find
ん(これは現在のディレクトリを指定しなければ)してご利用いただけます。使っていLinux、Mac OS X、Cygwinがすべて同時に、でも私にとってとても大きな収穫だって僕のツールの動作と同じです。また書bash find
る機能を追加"./" れば忘れてしまったのが失敗しました。おります。:)
解決
find
を「正しく」使用するように訓練できない場合は、GNU find
( findutils
から)をシステムの find
コマンドの前のPATH上のディレクトリ。
以前は、リストの最後の項目がディレクトリでない場合に現在のディレクトリにファイルをコピーする cp
の独自のプライベートバリアントがありました。私は長年にわたって個人の bin
ディレクトリに保存していましたが、機能を使用しなくなったため、最終的に削除しました。 (私の 'cp.sh'は1987年に作成され、バージョン管理システム表記の変更の一部として1990年と1997年に2回編集されました。1998年頃に削除したと思います。スクリプトの主な問題は cp file1 file2
は、ファイルを別のファイルにコピーすることと、2つのファイルを現在のディレクトリにコピーすることとの間であいまいです。
find
への独自のラッパーの作成を検討してください:
#!/bin/sh
[ ! -d "$1" ] && set -- . "$@"
exec /usr/bin/find "$@"
2行目に"引数1がディレクトリでない場合、コマンドライン引数を調整して、残りのコマンドの前にドットが含まれるようにします。次のように入力すると混乱します。
~/bin/find /non-existent/directory -name '*.plist' -print
存在しないディレクトリはディレクトリではないため、スクリプトはコマンドラインにドットを追加します。これは、プライベート cp
コマンドの使用を停止した理由です。
他のヒント
代わりにGNU findをインストールします。
$ brew install findutils
$ alias find=gfind
はい、動作します!
「find」と呼ぶ必要がある場合は、次のようにします。
alias find=/usr/bin/find\ .
.profileまたは.bash_profileまたは…で。 Mac OSXの実際のパス(/ usr / bin / findではない場合)に置き換えます。サイクルを回避するためにフルパスを入力します(bashは通常 alias find = find
を問題なく解釈しますが、確認することをお勧めします)。
ただし、エイリアスに find
(findl、myfindなど)という名前を付けないようにしてください。別のシステムで試してみると習慣になり、問題が発生するためです。
find ./ -name "*.plist"
編集:うーん、質問を誤解したかもしれません!気が狂ったら、シェルスクリプトでエミュレートしてみてはどうでしょうか。私は定期的に〜/ .binにランダムなユーティリティスクリプトを保持します。これが私のPATHの最初のものです。同様の設定を行っていれば、おそらく次のようなことができます:(テストなし!)
#!/bin/sh
# remapping find!
CMD=`echo $1 | cut -c 1`
if [ $CMD = '-' ]
then
# pwd search
/usr/bin/find ./ $*
else
# regular find
/usr/bin/find $*
fi
スクリプト(将来的にシステム間で移行される可能性が高い)を作成する場合は、より具体的な形式のコマンドを使用して、&quotを指定することをお勧めします;。"デフォルトに依存する代わりに。同じ理由で、どこにもインストールされていない可能性のある bash
に頼るのではなく、 sh
スクリプトを書くことをお勧めするかもしれません。
これはおそらくあなたが望むものではありませんが、どうですか: alias find =" find。"
または新しい名前を選択します(ローカル検索の場合は findl
)
を実行するコマンドはこのリンク: https://www.topbug.net/blog/2013/04/14/install-and-use-gnu-command-line-tools-in-mac-os-x/
あの古い、例えばかなかったのを追加する多くのコマンドは私のパスです。
この問題による都立川市のシステム開発会社株式、非BSDべ明らかに findutils
パッケージを置その他のツールす。