に{ 『$ _』}は」行動:エイリアス私は「見つける」のUnixをエミュレートするために、次のコードを使用したいのPowerShell
ls DIRECTORY -recurse -include PATTERN | foreach { "$_" }
は実際には、他のコマンドがいくつかあります私はこれに| foreach { "$_" }
を追加したいと思います。だから、これを簡単に入力できる方法を見つけようとしています。
に{ 『$ _』}は」行動:エイリアス私は「見つける」のUnixをエミュレートするために、次のコードを使用したいのPowerShell
ls DIRECTORY -recurse -include PATTERN | foreach { "$_" }
は実際には、他のコマンドがいくつかあります私はこれに| foreach { "$_" }
を追加したいと思います。だから、これを簡単に入力できる方法を見つけようとしています。
は単にGet-ChildItem
(別名ls
、dir
の-name
スイッチを使用することを考えてみましょう):
ls DIRECTORY -recurse -include PATTERN -name
この方法はネイティブでクリーンで効果的です。
はい、これは本当に効果的です - KISS!私はこれを使用すると思う。 – hibbelig
は、それが拡張することができ、これを試してみてください...
xfind DIRECTORY -recurse -include PATTERN
しかし、それは間違ったことを行うように見えた:私はこのようなものを試してみました:
function xfind {
ls $args | foreach { "$_" }
}
そして私はそうのようにそれを呼び出しました本格的な高度機能に鍵は高度な機能でavaialbleある特殊変数(PSBoundParameters)を使用して、それらのすべてを渡すことで、LSにパラメータを渡すことです:
function xfind {
[cmdletbinding()]
param(
[string[]]$path,
[switch]$recurse,
[string[]]$include
)
ls @PSBoundParameters | foreach { "$_" }
}
タイピングが少なくて済むようにマイクロ最適化を行うと、foreachキーワードの代わりに%を使用することになります。 – Goyuix
検索するパターンが複数ある場合(* .cpp、*。hなど)は、includeの代わりに '-filter'パラメータを使用して、パフォーマンスを向上させてください。小さなディレクトリでは問題にならないかもしれませんが、大きなディレクトリとネットワーク共有には違いがあります。 –
異なるPowerShellとUnixシェルの違いは非常に興味深いです。はるかに少ない動的。私はこのような(bash)関数を持っています: 'le(){" $ @ "|もっと少なく; } ' この関数は任意のコマンドを実行して、それより少ないパイプでパイプすることができます。しかし、Shayの答えを見れば、PowerShellではこのようなことができないと思います。 – hibbelig