Grep

Find + Grep 遞歸搜尋

  • April 12, 2014

我正在使用 wget 鏡像一個網站。在伺服器上,有一個find /命令轉儲,其中包括以下形式的文件名:

/dir1/ /dir1/page1.txt /dir1/page2.txt ...

鏡像非常大(100GB+),我想將本地輸出與find包含伺服器端轉儲的文本文件進行比較,以便了解剩下多少文件。

我正在考慮使用grep -v ...orawk但我不太確定如何去做。

任何人都可以幫助我嗎?

謝謝 !

您可以使用comm(使用bash程序替換)執行此操作:

comm -13 <(find / | sort) <(sort server_dump)

這將顯示伺服器獨有的文件。對於本地系統獨有的文件:

comm -23 <(find / | sort) <(sort server_dump)

您還可以添加-xdev選項來查找以阻止它比較其他文件系統上的文件,例如/proc/sys.

我認為您不需要使用wget's遞歸下載選項,因為您已經有了需要下載的文件列表:

wget --input-file=./path/to/your/list --base=URL

通過這種方式,您只需首先關注列表,因此下載的每個文件都將是列表中的下一個文件。因此,您總是可以通過檢查最後下載的文件及其在列表中的位置來找到您的進度。

但如果這不起作用:

{ find . ; sed 's/.*/.&/' list.file ; } | 
   sort | uniq -u

引用自:https://unix.stackexchange.com/questions/124326