Scripting

僅列出包含兩個特定文件的子目錄

  • May 12, 2021

我正在使用我的 iPhone 終端在 iOS 上執行以下程式碼,需要明確的是,這個命令是在我越獄的 iphone 中使用一個名為 New Term 2 的超薄終端調整執行的:

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

這將返回包含index.html. 我想知道如何添加另一個文件:(Config_extra.js如果存在,它將位於與 index.html 相同的文件夾中)到搜尋中,結果只顯示包含兩個文件的文件夾

提前致謝

你快到了;一旦找到 index.html 文件,我們要求它通過(一些實現支持的非 POSIX 選項,包括iOS 上的BSD- )find在同一目錄中查找 Config_extra.js 文件,成功後我們列印目錄名稱。-execdir``find``find

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' ;

解決這個問題的另一種方法是perl使用長期以來File::Find作為標準和核心的一部分的模組。Perl意思是,如果你有,perl你有File::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"

引用自:https://unix.stackexchange.com/questions/649189