6

我试图在 bash 中编写脚本,它将遍历所有子目录,从给定路径开始,并将创建包含当前目录中所有文件的 md5 总和的列表。

我需要类似的东西ls -R,但我不知道如何开始

4

2 回答 2

7

使用find有一种非常简单的方法:

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

该命令查找所有文件 ( -type f),并对每个文件 ( -exec md5 {} \;) 执行命令 md5。

于 2013-05-03T19:11:05.663 回答
1

还有一个名为 tree 的程序,但您可以仅使用 shell 内置函数来模拟它:

#!/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 回答