我從網站下載了大量文件(〜10,000),其中大部分是大量無用的HTML,它們都表達了相同的內容。然而,這個乾草堆中有一些文件具有有用的信息(因此是相當不同的文件),我需要一種快速的方法將其與其他文件分開。我知道我可以逐個瀏覽所有文件,並使用cmp與模板進行比較,看看它們是否相同,然後刪除它們。但是,這很慢。有沒有更快的方法來做到這一點?我不介意我是否只有99%的恢復率。快速比較Bash中的大量文件
0
A
回答
1
這其中列出了獨特的文件作爲參數傳遞的樹:
#!/bin/bash
declare -A uniques
while IFS= read -r file; do
[[ ! "${uniques[${file%% *}]}" ]] && uniques[${file%% *}]="${file##* }"
done< <(find "$1" -type f -exec md5sum -b "{}" \;)
for file in ${uniques[@]}; do
echo "$file"
done
非常感謝triplee使用的md5sum更好的方法!
一版本:
#!/bin/bash
declare -a files uniques
while IFS= read -r -d $'\0' file; do
files[${#files[@]}]="$file"
done< <(find "$1" -type f -print0)
uniques=(${files[@]})
for file in "${files[@]}"; do
for unique in "${!uniques[@]}"; do
[[ "$file" != "${uniques[$unique]}" ]] && cmp -s "$file" "${uniques[$unique]}" && && unset -v uniques[$unique]
done
done
for unique in "${uniques[@]}"; do
echo "$unique"
done
0
假設所有文件都在或當前目錄下,並且模板是在父目錄和文件名都沒有空格:
find . -type f -print | while read -r filename; do
if ! cmp --quiet $filename ../template; then
echo rm $filename
fi
done
刪除「回聲」,如果你不滿意這個作品。
相關問題
- 1. 快速向量元素比較
- 2. 比較變量與文件名bash
- 3. OpenCV/numpy:使用numpy快速比較大量輪廓對象
- 4. 比較bash變量
- 5. 快速比較數組數
- 6. 快速像素比較
- 7. 快速64位比較
- 8. 快速比較陣列
- 9. 快速比較NSArray和NSString?
- 10. bash腳本比較文件
- 11. 比較Bash中的很多文件
- 12. 快速讀取大量文件
- 13. 比較bash中2個目錄的所有文件大小
- 14. 如何使用Bash將大量字符串快速輸入到文件中
- 15. 使用python快速比較2個文本文件
- 16. 比較大的XML文件
- 17. 快速幫助bash腳本刪除大文件的行
- 18. 比較兩個bash變量
- 19. 快速更換大文件
- 20. 快速解析python中的大文件
- 21. 字符數組的快速比較?
- 22. C# - 圖像比較(快速的)
- 23. 快速枚舉的順序和比較
- 24. 快速輕量級圖像比較度量算法
- 25. 快速比較兩個數據庫備份文件
- 26. 比較文件大小從遠程計算機上的bash
- 27. 計算快速排序算法中組件智能比較的數量。
- 28. 快速比較快速參數(獲取請求)
- 29. PowerShell快速搜索大量文件中的短語
- 30. 比較兩個大文件
要明確:要刪除其內容的所有文件匹配指定的模板文件? –
你可以做的是在你的問題更具體。你的意思是大多數文件是相同的,即內容從頭到尾匹配字節的字節?或者乾脆他們是相似的?當你說某些文件是「非常不同的文件」時,你是什麼意思?他們的內容有所不同?文件類型?尺寸?還有別的嗎? –
是的,我想刪除匹配的文件,它們都是完全一樣的字節字節。不同的文件有額外的信息,因此會更大,但會是相同的文件類型。 –