find - (find . -iname '*$1*') のような操作を実行するためにエイリアスを作成するには?

find - (find . -iname '*$1*') のような操作を実行するためにエイリアスを作成するには?

私は機能がありますfindn

findn () {
    find . -iname "*$1*"
}

この機能を使用することの1つの欠点は、ファイル名にスペースが含まれている場合、findコマンドの機能を拡張するために-print0 | xargs -0 command以下を使用できないことです(私はMacを使用しています)。findn filename

-iname "*$1*"それでは、便利さと実用的な機能を同時に維持する方法はないでしょうか?| xargs command

これを行うためにエイリアスを使用するつもりですが、必ずしもエイリアスである必要はありません。

ベストアンサー1

お客様のソリューションは、次の目的で動作しますxargs

$ echo "foo bar one" > foobarone
$ echo "foo bar two" > fooBARtwo
$ findn "bar"
./fooBARtwo
./foobarone
$ findn "bar" | xargs cat
foo bar two
foo bar one

それとも私が何かを見逃しているのでしょうか?

関数を少し変更した場合は、findコマンドに追加のパラメーターを追加できます。

findn () {
  local name=$1
  shift
  find . -iname "*$name*" "$@"
}

例:

$ findn bar ! -name '*two' -print0 | xargs -0 cat
foo bar one

おすすめ記事