いくつかの一般的な* nixシステム(Debian、CentOS、Arch、Kaliなど)を検討してください。

私はいつも使用find; GNU findを使用したことを覚えていませんが、一例からGNUfindの構文はもっと単純かもしれないと思いました( で許可される操作が少なくなる可能性があります。

2つの質問があります:

  1. findは、一般的なシステムのデフォルトの「検索または操作」ユーティリティですか、それともシステムには両方が付属します findおよびGNU find

  2. GNU find findより簡単にすることを目的としています?

コメント

  • LinuxでGNUfindを常に使用している場合を除きます。 ' busyboxまたはandroidでfindの大口ユーザーです;-) Linux以外のシステムでは、GNUfindは通常

  • find --version;)
  • 'が参照しているシステムはGNUシステムであり、ほとんどがGNU / Linuxですが、Debianは他のいくつかのカーネルでも利用できます。上手。したがって、これらのシステムでのfindの実装がGNU findであることは'驚くことではありません。
  • 回答

    GNUユーティリティは多くの場合POSIX標準を実装し、さらに便利にするために追加機能で拡張します(そして、その裏返しとして、Unices全体の移植性が低下しました)。移植性の側面は、GNUユーティリティまたはユーティリティの他の特定の実装が想定される場合に非常に注意深く指摘する回答またはコメントがこのサイトに表示される理由です。

    Linuxを使用している場合システムでは、非常におそらくfindのGNU実装を使用しており、おそらく別のfindインストール済み。 Linux以外のシステムでは、ネイティブのfindがあり、GNU findもインストールできます(ほとんどの場合、名前gfindまたはまれにgnufind)。

    ほとんどのGNUユーティリティと同様に、GNU findは標準のfind仕様を実装および拡張 します。したがって、「単純」ではなく、より便利にするためにおそらくより複雑であり、厳密に標準に準拠したfindを使用するよりも、特定の複雑なタスクを実行する方がやや簡単です。 。

    findの拡張実装は、多くの場合、たとえば、-maxdepthおよび標準で言及されていない述語、特にGNU findには、見つかったパス名を使用して出力する-printfもあります。さまざまなフォーマットの可能性(標準のfindには-printfがありません)、およびパス名でさまざまな種類の正規表現マッチングを実行するための述語、また、他の多くの非標準述語もあり、その一部はfindの他の実装にも見られます( whi chの動作は、使用されているfindによってわずかに異なります 1 )。

    -delete述語は非標準ですが、GNU findおよびfind他のいくつかの非Linuxシステム。 GNU find “s -deleteは、空でないディレクトリを削除するために使用すると文句を言いますが、OpenBSDなどの対応するオプションfindは使用しません(空でないディレクトリも削除しません)。

    ほとんどのLinuxシステムは、配布に関係なく、同じcoreutilsおよびfindutilsツールセットを使用します(明らかにbusyboxが存在します)。まったく異なるツール実装のセットを使用するには、オープンソースのBSDシステムのいずれかに移動するか、macOS、Solaris、AIX、またはその他の商用Unixに移動する必要があります。


    1 GNU findは、-execdirを使用しているときに、パス名の前に./を追加します。他のいくつかの実装は「しません。

    コメント

    • および-print0、および-direxec、および-delete、および… ;-)。GNUツールで使用可能なnull区切りオプションは特に便利です。
    • @StephenKittしかし、ここでPOSIX以外の回答を書く場合を除いて、必要になることはめったにありません 🙂
    • そうです;-)。 (またはどこでも動作する必要のあるスクリプト。)
    • GNUドキュメントの主な問題は、POSIXメソッドの非標準エイリアスを使用できるようにすることです。ベンダーロックインを作成するための関連スクリプト。
    • @StephenKitt -print0は* bsdとsolarisでも利用できます。ただし、solarisではxargs -0が'機能しないため、gxargs -0/usr/bin/sfw)を使用する必要があります。

    回答

    よく言われることLinuxはGNU / Linuxと呼ばれる方がよいので:LinuxとGNU。したがって、使用しているツールはおそらくGNUです。

    • Linux:カーネル。GNU/ Linux、Android、およびその他の多くのシステムで使用されています。
    • GNU:オペレーティングシステム。Linuxカーネルでよく使用されますが、BSD、Hurd、Cygwin(MicrosoftのWindows用のDLL、カーネルのふりをします)、WSL(Linux用のWindowsサブシステム:LinuxなしのGNU、 MicrosoftのWindows)、HPUX、Solaris、Dec Athena、その他多数。

    したがって、おそらくGNUfindを使用しています。

    GNUは再構築するプロジェクトです。 find

    無料(価格ではなく自由のように無料)バージョンを作成します。

    、GNUプロジェクトはPOSIX準拠について心配していません。それは意味のあるところに準拠しますが、改善も行います。

    また、他に1つしかないが間違っています。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です