2012-03-08 114 views
0

我需要编写一个bash脚本来扫描当前目录中的目录,并为目录树中的每个文件生成md5校验和值。它还应该保持文件和打印校验和的相对路径。递归扫描bash中的目录

例如,如果目录树是这个样子:

. 
├── d 
│   ├── file1.c 
│   └── file2.c 
├── e 
│   └── file3.c 
└── f 
    └── file4.cpp 

输出应该是这样的:

d8e8fca2dc0f896fd7cb4cb0031ba249 d/file1.c 
d8e8fca2dc0f896fd7cb4cb0031ba249 d/file2.c 
d8e8fca2dc0f896fd7cb4cb0031ba249 e/file3.c 
d8e8fca2dc0f896fd7cb4cb0031ba249 f/file4.cpp 

但我不能找到一种方法来保持路径时,cd到文件他们...

回答

6
find . -type f -exec md5sum {} \; 

或...

find . -type f | xargs -n 1 -d "\n" md5sum 
+0

工作正常。谢谢:) – 2012-03-08 06:12:45

+1

你可以通过''''代替''使用'''终结符'来大幅提高性能。前者收集多个参数作为块传递给'-exec'。后者为**每**参数生成一个进程。流程实例化代价很高。在某些系统中,'-exec ...()+'可能会比“xargs”更胜一筹。 – JRFerguson 2012-03-08 13:17:27