このような場合、Find + Grepよりもfindをより効率的に使用できますか?

このような場合、Find + Grepよりもfindをより効率的に使用できますか?

ファイル名の一部に基づいて現在のフォルダとサブフォルダのファイルを検索することがよくあります。この場合、find + grepただfind。例えば

find . | grep user   #19 chars typed

find でのみ作成できます。

find . -path "user*" #21 chars typed

ファイルを見つけるために設計されたコマンドを使用するとき、より多くの文字を入力し、それらの2つを組み合わせて使用​​するのは少し愚かな感じです。

文字入力時にfindだけをより効率的にする方法はありますか?

ベストアンサー1

はい、

ff () {
    find . -path "*$1*"
}

関数は次のように呼び出されます。

ff user

そして、与えられた文字列を含む現在のディレクトリ内または下のすべてのパス名(ファイル、ディレクトリなど)を返します。

~/.bashrc関数定義はファイル(またはシェルで使用されている対応するシェル初期化ファイル)に入る必要があり、次に開始する対話型シェルで使用できます。


次のバリエーションは、パス名のファイル名部分のみを考慮します。

ff () {
    find . -name "*$1*"
}

結果を次に制限する場合一般ファイルをクリックしてから通話-type fに追加します。find

ff () {
    find . -type f -name "*$1*"
}

コマンドに注意してください。

find . -path "user*"

何も出力されません。これは、考慮されるすべてのパス名がで始まるためです.

最後の警告:私はこれがインタラクティブに使用されると仮定しています。到着バラより結果から。これをスクリプトで使用したり、関数から返されたファイル名に対して反復を実行したい場合検索結果を繰り返すのはなぜ悪い習慣ですか?」。

おすすめ記事