6

指定されたパスからスターを付けてすべてのサブディレクトリをループし、現在のディレクトリ内のすべてのファイルの md5 合計でリストを作成するスクリプトを bash に書き込もうとしています。

のようなものが必要ですがls -R、開始方法がわかりません

4

2 に答える 2

7

findを使用してこれを行う非常に簡単な方法があります。

find . -type f -exec md5 {} \;

このコマンドはすべてのファイルを検索し ( -type f)、各ファイルに対してコマンド md5 を実行します ( -exec md5 {} \;)。

于 2013-05-03T19:11:05.663 に答える
1

tree というプログラムもありますが、シェルのビルトインのみでシミュレートできます。

#!/bin/sh
DIR=${1:-`pwd`}
SPACING=${2:-|}
cd $DIR
for x in * ; do
    [ -d "$DIR/$x" ] &&  echo "$SPACING\`-{$x" && $0 "$DIR/$x" "$SPACING  " || \
    echo "$SPACING $x : MD5=" && md5sum "$DIR/$x"
done

フルパス引数が必要であることに注意してください(または現在のディレクトリには何も必要ありません)

find ほど高速ではありませんが (高速化する方法はたくさんあるため、コードを理解するのがより複雑になります)、ツリー構造のグラフィカルな表現が得られます。&& [ ! -L "$DIR/$x" ]ディレクトリを追加するか、リストのみに追加することで、シンボリックリンクをたどらないように変更できます。|| echo $SPACING $x

于 2013-05-03T20:07:07.050 に答える