2011-07-24 6 views
0

生成:bashはdirsのリストを通過していることをbashスクリプトだろう何MD5

  1. がディレクトリを通過し、各ディレクトリについてのアレイ
  2. 内のすべてのサブディレクトリを置くと、生成しますmd5そのディレクトリ内のファイルの合計

また、md5sumを生成するファイルは、必ずしも同じ名前とパスを持つとは限りません。しかし、パターンは常に同じです:

/var/mobile/Applications/{ the dir name here is taken from the array }/{some name}.app/{ binary, who's name is the same as it's parent dir, but without the .app extension } 

私は前にはbashで働いたことがありません(とに必要なことがありません)ので、これは本当に簡単かつnoobyものになることがあります。誰もがアイデアを持っていますか?パスでわかるように、これはiDevice上で実行されるように設計されています。

答えて

2
for dir in /var/mobile/Applications/*; do 
    for app in "$dir"/*.app; do 
    appdirname=${app##*/} 
    appname=${appdirname%.app} 
    binary="$app/$appname" 
    if [ -f "$binary" ]; then 
     echo "I: dir=$dir appbase=$appbase binary=$binary" 
    fi 
    done 
done 

これを試してください。私はコードが簡単であることを願っています。説明する価値が二つのものがあります:

  • ${app##*/}、表現*/に一致する最長のプレフィックスを取り除くために##演算子を使用しています。
  • ${appdirname%.app}%演算子を使用して、式.appに一致する最短の接尾辞を削除します。 (パターン.appは4つの文字は常にあるので、あなたはまた、代わりに%の)最長のサフィックスを取り除き(%%を使用することもできます。)
2

は何か試してみてください:

ls -1 /Applications/*/Contents/Info.plist | while read name; do md5 -r "$name"; done 

上記表示されますMD5チェックサムをすべてのアプリケーションのすべてのInfo.plistファイルに対して、のような:

d3bde2b76489e1ac081b68bbf18a7c29 /Applications/Address Book.app/Contents/Info.plist 
6a093349355d20d4af85460340bc72b2 /Applications/Automator.app/Contents/Info.plist 
f1c120d6ccc0426a1d3be16c81639ecb /Applications/Calculator.app/Contents/Info.plist 
+0

おかげで、簡単なようです。しかし、どうすれば.appディレクトリの名前を格納できますか?md5ハッシュを生成しなければならないファイルの名前は、親ディレクトリと同じですが、拡張子はありません! –

+0

あなたができることは最高です。あなたの質問を編集し、必要な出力のサンプルを表示してください。 – jm666

0

bashは非常に簡単ですが、あなたのシステムのCLI-ツールを知っている必要があります。あなたが持つリストを生成することができます

find /tmp/ -type d 

:あなただけのディレクトリツリーを一覧表示したい場合は

find /yourdirectory/ -type f | xargs md5sum 

再帰的にディレクトリのすべてのファイルのMD5ハッシュを印刷します:リストを反復するための "ため"

MYLIST=$(find /tmp/ -type d) 

使用:

for i in $MYLIST; do 
    echo $i; 
done 

あなたはbashで初心者している場合:jm666 @

関連する問題