いくつかの一般的な* nixシステム(Debian、CentOS、Arch、Kaliなど)を検討してください。
私はいつも使用find
; GNU findを使用したことを覚えていませんが、一例からGNUfindの構文はもっと単純かもしれないと思いました( で許可される操作が少なくなる可能性があります。
2つの質問があります:
-
find
は、一般的なシステムのデフォルトの「検索または操作」ユーティリティですか、それともシステムには両方が付属しますfind
およびGNU find
? -
GNU find
をfind
より簡単にすることを目的としています?
コメント
。
find --version
;)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つしかないが間違っています。
find
の大口ユーザーです;-) Linux以外のシステムでは、GNUfindは通常