2013-02-08 81 views
4

我嘗試對所有.jar文件進行校驗和,我可以在目錄及其子目錄中找到。然後將帶有校驗和值的文件名打印到文件中。在Linux中打印查找命令的結果md5sum

這就是我所擁有的。

md5sum | find -name *.jar >result.txt 

我試圖將兩個命令聯合在一起,我知道單獨工作。

任何幫助表示讚賞。

+0

你也許會發現hashdeep有用:http://md5deep.sourceforge.net/ – djeikyb 2013-02-08 17:12:14

回答

8

你可以使用這樣的事情,在每個文件執行命令:(!感謝我的系統管理員)

find . -name "*.jar" -exec md5sum {} \; >result 
+0

謝謝你。它工作完美。任何添加,只能在文件中寫入文件名,而不是完整的文件夾路徑。 – 2013-02-08 16:41:28

+0

@JamesMclaren是的,如果你添加'-printf「%f \ n」'它只會打印文件名,但我不認爲它會工作,因爲'md5sum'需要完整路徑,你可以在執行命令後刪除路徑用'sed'或'awk' – iabdalkader 2013-02-08 17:00:14

1

這也將努力遞歸哈希在當前目錄或所有文件分目錄:

md5sum $(find . -name '*.jar') > result.txt 

以上將在文件名前添加「./」(不包括路徑)。

使用來自多路複用器的-exec建議在文件名前面加上「*」(再次沒有路徑)。

列出的文件順序也在這兩者之間有所不同,但我沒有資格說清楚爲什麼,因爲我是一個完全noob bash腳本。

編輯:忘記上面有關prepend和完整路徑,這是基於我在HPC上遠程運行的經驗。我剛剛使用cygwin在我的本地Windows機器上運行了我的系統管理員的建議,並獲得了完整的路徑,前面帶有「*。/」。我需要使用其他一些花式來傾倒不一致的路徑並預先考慮,以便於比較。簡而言之,YMMV。