在bash中创建每个子目录中的所有文件的列表

时间:2013-05-03 19:08:09

标签: linux bash list loops subdirectory

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

我需要像ls -R这样的东西,但我不知道如何开始

2 个答案:

答案 0 :(得分:6)

使用find进行此操作非常简单:

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

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

答案 1 :(得分: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