特に、mkinitcpioでこのコマンドを使用することは、find -mindepth 1 -printf '%P\0'
-printfフラグを使用せずに同じ出力でコマンドを再作成する方法です。https://git.archlinux.org/mkinitcpio.git/tree/mkinitcpio便利な場合に備えて、スクリプト全体は次のようになります。
ベストアンサー1
%P
始点として使用されているディレクトリから始まるファイルへの相対パスを提供するため、始点find
として実行してパス名を見つけると。some/path
some/path/to/file
%P
to/file
GNUにfind
開始点が与えられていない場合(質問に与えられたコマンドのように)、現在のディレクトリ(.
)を開始点として使用します。したがって、この場合、検索された%P
パスから形式が削除されます。./
-printf '%P\0'
GNU以外の実装と同じことを行うには(BSDシステムなど)、まだ利用可能であるとしますfind
。-mindepth
find
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" {} +