Grep
Find + Grep 遞歸搜尋
我正在使用 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