いくつかの一般的な*nixシステム(Debian、CentOS、Arch、Kaliなど)を考えてみましょう。
私はいつもfind
GNU findを使って覚えていません。一例私はGNU findの構文がより簡単かもしれないと思いました。可能より少ない作業が可能です)。
2つの質問があります。
通常のシステムのデフォルトの「検索または実行」ユーティリティですか
find
、それともシステムに含まれていますか?両方find
そしてGNU find
?以前は
GNU find
故意により簡単にfind
?
ベストアンサー1
GNUユーティリティは通常POSIX標準を実装し、それをアドインに拡張して利便性を高めます(ただし、Unices間の移植性は低下します)。移植性の観点から、このサイトでGNUユーティリティまたはユーティリティの他の特定の実装を使用することを想定する時期を非常に慎重に示す回答やコメントが時折表示されることがあります。
Linuxシステムを使用している場合非常にGNU実装を使用している場合もfind
、find
他の実装をインストールしない場合もあります。 Linux以外のシステムでは、デフォルトのGNUがあり、find
GNUもインストールされますfind
(通常は名前またはそれほどgfind
頻繁ではありませんgnufind
)。
ほとんどのGNUユーティリティと同様に、GNUのfind
実装も次のことを行います。延長する find
標準。したがって、「より単純」ではありませんが、便宜上より複雑であり、特定の複雑なタスクを実行するためにそれを使用することは厳密に規格に準拠していますfind
。
find
たとえば、拡張実装は-maxdepth
標準で言及されていない述語を実装することがよくあります。名前も印刷する必要があります。パス名式のマッチングのさまざまなタイプと他の多くの非標準述部については、他の実装でも見つけることができます(意味が若干異なる可能性があり、使用されている項目によって多少異なる動作1)。-mindepth
find
-printf
find
-printf
find
-execdir
find
あなたがリンクした回答に使用される述語は非-delete
標準ですが、GNUfind
やfind
他の非Linuxシステムで実装されています。 GNUは空でないディレクトリを削除するために使用すると苦情をfind
表示します-delete
が、OpenBSDなどの対応するオプションはfind
そうではありません(空でないディレクトリも削除しません)。
ディストリビューションに関係なく、ほとんどのLinuxシステムは同じcoreutilsツールとfindutilsツールセットを使用します(明らかにbusyboxなどのバリエーションがあります)。まったく異なるツールセットを使用してこれを実装するには、オープンソースのBSDシステムまたはmacOS、Solaris、AIX、またはその他の商用Unixに移動する必要があります。
1 GNU は使用時にパス名の前にプレフィックスを付けますfind
が、他の実装ではそうではありません。./
-execdir