名前がマスクに一致するファイルまたはファイルへのシンボリックリンクの検索

名前がマスクに一致するファイルまたはファイルへのシンボリックリンクの検索

検索に使用していますsudo find / -name gcc*。複数のディレクトリを返しますが、私はファイルだけを望んでいます。しかし、追加すると、-type f私が望むシンボリックリンクはリストされません。ディレクトリをフィルタリングしてシンボリックリンクを維持する方法は?

また、ワイルドカードを使用してもサポートされていないワイルドカード*というファイルをリストできないことがわかりましたgcc-10findこれを行うことができる他のユーティリティはありますか?

ベストアンサー1

GNUの実装では、次のことがfindできます。

find / -name 'gcc*' -xtype f

typeシンボリックリンクの確認後にファイルを確認するために使用されます。

再帰グローブを使用すると、zsh次のような効果が得られます。

print -rC1 /**/gcc*(-.)

ここで、glob修飾子はシンボリックリンク確認後に-次の修飾子(ここでは同じ)が適用されるようにします.-type f

可能であれば、すでに構築されているデータベースからファイルを検索するため、通常はより速い方法を代わりにfind使用できます。locate

locate -b0 'gcc*' | find -files0-from - -prune -xtype f

GNU find4.9以降を使用すると、locate名前がaseで始まるすべてのファイルが一覧表示され、bgccfind一般ファイルシンボリックリンクが解決された後。

またはglobと同じですzsh

print -rC1 ${(0)^"$(locate -b0 'gcc*')"}(N-.)

-fPerlは演算子[/をtestテストできるため、これにも役立ちます。定期的なデフォルトでは、シンボリックリンクはファイルとして解決されるため、次のことができます。

locate -b0 'gcc*' | perl -l -0ne 'print if -f'

これにより、ファイルシステム全体をクロールすることなくほぼ即座に結果を得ることができます(ただし、locate最後のデータベース更新以降に追加された一部のファイルは失われる可能性があります)。

おすすめ記事