Scripting
僅列出包含兩個特定文件的子目錄
我正在使用我的 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"