私が欲しい:
- 大文字で始まるすべてのディレクトリを検索
- 次に、このディレクトリ内で ".git"という名前のすべてのディレクトリを探します。
これはパフォーマンスを最適化するためのものです。私の解決策は、最初に検索範囲を特定のディレクトリに絞り込んだ後、その中で検索することでした。
まず私の考えはこうです。
find / -mindepth 1 -maxdepth 1 -name "[[:upper:]]*"
2番目の使用は次のとおりです。
find / -type d -name ".git" 2>/dev/null
今、私はそれらをどのように接続するのかわかりません。 2番目のアイテムはfind
最初のアイテムの結果のみを検索したいと思いますfind
。
またはXY問題の場合は、速度を向上させるための提案を教えてください。
.git
マシンのすべてのディレクトリを見つける必要があります。ただし、ディレクトリは.git
大文字で始まる最上位ディレクトリに配置する必要があります。
ベストアンサー1
find
ここでは、次を使用して式を使用したり、-mindepth
/ GNUismを回避したりすることもできます-maxdepth
。
find / ! -path / ! -path '/[[:upper:]]*' -prune -o -name .git -type d -print
より一般的には、次のようにfind
移植可能なコマンドをリンクできます。
find ... -exec sh -c '
find "$@" ... -exec ... {\} ...' sh {} +
{}
(これは、外部(最初の)クエリから選択されないように内部(2番目)のクエリに挿入する方法を示しています。
または、最新バージョンのGNU find
(4.9.0以降)を使用してください。
find ... -print0 | find -files0-from - ...