検索とGNU検索の違い

検索とGNU検索の違い

いくつかの一般的な*nixシステム(Debian、CentOS、Arch、Kaliなど)を考えてみましょう。

私はいつもfindGNU findを使って覚えていません。一例私はGNU findの構文がより簡単かもしれないと思いました。可能より少ない作業が可能です)。

2つの質問があります。

  1. 通常のシステムのデフォルトの「検索または実行」ユーティリティですかfind、それともシステムに含まれていますか?両方 findそしてGNU find

  2. 以前はGNU find故意により簡単にfind

ベストアンサー1

GNUユーティリティは通常POSIX標準を実装し、それをアドインに拡張して利便性を高めます(ただし、Unices間の移植性は低下します)。移植性の観点から、このサイトでGNUユーティリティまたはユーティリティの他の特定の実装を使用することを想定する時期を非常に慎重に示す回答やコメントが時折表示されることがあります。

Linuxシステムを使用している場合非常にGNU実装を使用している場合もfindfind他の実装をインストールしない場合もあります。 Linux以外のシステムでは、デフォルトのGNUがあり、findGNUもインストールされますfind(通常は名前またはそれほどgfind頻繁ではありませんgnufind)。

ほとんどのGNUユーティリティと同様に、GNUのfind実装も次のことを行います。延長する find標準。したがって、「より単純」ではありませんが、便宜上より複雑であり、特定の複雑なタスクを実行するためにそれを使用することは厳密に規格に準拠していますfind

findたとえば、拡張実装は-maxdepth標準で言及されていない述語を実装することがよくあります。名前も印刷する必要があります。パス名式のマッチングのさまざまなタイプと他の多くの非標準述部については、他の実装でも見つけることができます(意味が若干異なる可能性があり、使用されている項目によって多少異なる動作1)。-mindepthfind-printffind-printffind-execdirfind

あなたがリンクした回答に使用される述語は非-delete標準ですが、GNUfindfind他の非Linuxシステムで実装されています。 GNUは空でないディレクトリを削除するために使用すると苦情をfind表示します-deleteが、OpenBSDなどの対応するオプションはfindそうではありません(空でないディレクトリも削除しません)。

ディストリビューションに関係なく、ほとんどのLinuxシステムは同じcoreutilsツールとfindutilsツールセットを使用します(明らかにbusyboxなどのバリエーションがあります)。まったく異なるツールセットを使用してこれを実装するには、オープンソースのBSDシステムまたはmacOS、Solaris、AIX、またはその他の商用Unixに移動する必要があります。


1 GNU は使用時にパス名の前にプレフィックスを付けますfindが、他の実装ではそうではありません。./-execdir

おすすめ記事