2012-03-08 113 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