「find」コマンドの基本色の可用性をテストし、サポートする基本色を出力するにはどうすればよいですか?

「find」コマンドの基本色の可用性をテストし、サポートする基本色を出力するにはどうすればよいですか?

find次の基本色がサポートされていることを確認するためのスクリプトを作成しています。

  • 正規表現
  • 時間
  • アルテム
  • +/- を使用する inum

これまで私はこれを思い出しました。

find / -mindepth 0 -maxdepth 1 -inum +0 -exec echo "ok:inum+-" \; 2>&1 | head -n 1

このコマンドは、マスターノードを理解している場合にのみ「ok:inum + -」を出力する必要があります。

問題は、一致するものを見つけるためにfindに依存することです。それ以外の場合は何も出力されません。

理想的には、テストの基本プログラムは見つかった内容を気にしないでください。エラーが原因でツールが中断されない限り、常にエコーを実行する必要があります。

放棄し-exec echo …て呼び出しの終了コードを確認できることを知っていますが、findそれに基づいて "ok:"文字列をどのように印刷しますか?

ああ、どんな解決策でもあるはずです。一行各テストの基本です。

ベストアンサー1

stderrに何があるかを検出できます。

find_supports() {
  [ -z "$(find / -prune "$@" 2>&1 > /dev/null)" ]
}

それから:

if find_supports -inum +0; then...
if find_supports -exit 2; then...
if find_supports -maxdepth 1; then...

一部の述語はfindサポートされていますが、互換性のない方法です。

たとえば、デフォルトは-regexBSDのデフォルトの正規表現を期待しますが、GNUは 。findfindemacs

説明サフィックス-mtime/も実装によって-size異なります。

また、上記は標準であり、実装にあるため、-depth//テストには使用できません。-delete-mindepth-prune-depth-maxdepth-mindepth

おすすめ記事