我试图在 bash 中编写脚本,它将遍历所有子目录,从给定路径开始,并将创建包含当前目录中所有文件的 md5 总和的列表。
我需要类似的东西ls -R
,但我不知道如何开始
我试图在 bash 中编写脚本,它将遍历所有子目录,从给定路径开始,并将创建包含当前目录中所有文件的 md5 总和的列表。
我需要类似的东西ls -R
,但我不知道如何开始
使用find有一种非常简单的方法:
find . -type f -exec md5 {} \;
该命令查找所有文件 ( -type f
),并对每个文件 ( -exec md5 {} \;
) 执行命令 md5。
还有一个名为 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