他の検索実装のGNU find -printfフラグと同じです。

他の検索実装のGNU find -printfフラグと同じです。

特に、mkinitcpioでこのコマンドを使用することは、find -mindepth 1 -printf '%P\0'-printfフラグを使用せずに同じ出力でコマンドを再作成する方法です。https://git.archlinux.org/mkinitcpio.git/tree/mkinitcpio便利な場合に備えて、スクリプト全体は次のようになります。

ベストアンサー1

%P始点として使用されているディレクトリから始まるファイルへの相対パスを提供するため、始点findとして実行してパス名を見つけると。some/pathsome/path/to/file%Pto/file

GNUにfind開始点が与えられていない場合(質問に与えられたコマンドのように)、現在のディレクトリ(.)を開始点として使用します。したがって、この場合、検索された%Pパスから形式が削除されます。./

-printf '%P\0'GNU以外の実装と同じことを行うには(BSDシステムなど)、まだ利用可能であるとしますfind-mindepthfind

find . -mindepth 1 -exec sh -c '
    for pathname do
        printf "%s\0" "${pathname#./}"
    done' sh {} +

埋め込みsh -cスクリプトは処理するパス名のバッチを取得し、find標準引数拡張を使用して終了./ヌル文字として印刷する前にパス名の最初の文字を削除します。


同じですが、変数を保持する場合一つトップレベルディレクトリパス:

topdir=/some/path

find "$topdir" -mindepth 1 -exec sh -c '
    topdir=${1%/}; shift
    for pathname do
        printf "%s\0" "${pathname#$topdir/}"
    done' sh "$topdir" {} +

おすすめ記事