2つの特定のファイルを含むサブディレクトリのみを一覧表示

2つの特定のファイルを含むサブディレクトリのみを一覧表示

私はiPhoneの端末を使用してiOSで次のコードを実行しています。明確にするために、このコマンドはNew Term 2という単純な端末調整を使用して脱獄されたiPhoneで実行されます。

cd /var/mobile/Library/Widgets
find . -maxdepth 3 -name 'index.html' -printf "%h\n"

これにより、含まれているフォルダのリストが返されますindex.html。他のファイルを追加する方法を知りたいです。 (Config_extra.js存在する場合はindex.htmlと同じフォルダにあります)結果が表示されるように検索これら2つのファイルのみを含むフォルダ

事前にありがとう

ベストアンサー1

ほぼすべて来ました。 index.htmlファイルが見つかったら(iOSのBSDを含む一部の実装でサポートされている非POSIXオプション)、同じディレクトリでConfig_extra.jsファイルを見つけるように要求しますfind。成功したら、ディレクトリ名を印刷します。-execdirfindfind

find . -maxdepth 3 -type f -name index.html -execdir test -f Config_extra.js \; -printf '%h\n'

上記のコマンドは拡張形式で書かれています。

find . -maxdepth 3 \
  -type f -name index.html \
  -execdir test -f Config_extra.js \; \
  -printf '%h\n' ;

この問題を解決するもう1つの方法は、長い間標準でコアであったモジュールをperl使用することです。意味は、あなたが持っているなら、あなたが持っているということです。File::FindPerlperlFile::Find

cfg='Config_extra.js'
perl -MFile::Find -le '
  find(
    sub {
      my $cfg = $ARGV[0];
      my $d = $File::Find::dir;
      -d && "$d/" =~ m|(?:.*/){3}| && $File::Find::prune++;
      -f && /^index\.html$/ && -f $cfg && print($d);
    }, 
    shift,
  )
' . "$cfg"

おすすめ記事