如何从 rdfind(删除重复项)摘要文本文件中恢复文件

如何从 rdfind(删除重复项)摘要文本文件中恢复文件

我曾使用 rdfind 删除重复文件。它会生成一个results.txt文件。该文件显示了它未删除的第一个重复文件,然后显示了已删除的所有重复文件的列表。以下是该文本文件的一个示例。

DUPTYPE_FIRST_OCCURRENCE 8644 2 27882216 2065 49681972 3 
         /media/r/WDE4/BU/Downloads/03.mp4

DUPTYPE_WITHIN_SAME_TREE -8644 2 27882216 2065 38020226 3                   
         /media/r/WDE4/g5/Downloads/03.mp4

DUPTYPE_WITHIN_SAME_TREE -8644 2 27882216 2065 55051289 3 
        /media/r/WDE4/BUg6/WhatsApp/WA.mp4

DUPTYPE_WITHIN_SAME_TREE -8644 1 27882216 2065 18613496 3 
        /media/r/WDE4/hl/CCWA0002.mp4

DUPTYPE_WITHIN_SAME_TREE -8644 2 27882216 2065 38021426 3 
        /media/r/WDE4/g5/Downloads/ZZ2.mp4

DUPTYPE_WITHIN_SAME_TREE -8644 2 27882216 2065 48497985 3          
        /media/r/WDE4/BUg60/WhatsApp/2.mp4


DUPTYPE_FIRST_OCCURRENCE 8424 2 30668643 2065 49682079 3 
        /media/r/WDE4/BU/Downloads/zzz.zip

DUPTYPE_WITHIN_SAME_TREE -8424 0 30668643 2065 18612483 3 
        /media/r/WDE4/zzz.zip

DUPTYPE_WITHIN_SAME_TREE -8424 2 30668643 2065 38020027 3 
        /media/r/WDE4/g5/Downloads/zz22.zip

DUPTYPE_FIRST_OCCURRENCE 8491 2 30672140 2065 49682078 3 
        /media/r/WDE4/BU/Downloads/z3.zip

DUPTYPE_WITHIN_SAME_TREE -8491 2 30672140 2065 38020084 3 
        /media/r/WDE4/g5/Downloads/One.zip

DUPTYPE_WITHIN_SAME_TREE -8491 1 30672140 2065 18612482 3 
        /media/r/WDE4/C/One2.zip

DUPTYPE_FIRST_OCCURRENCE 70405 3 30695973 2065 26739252 3 
        /media/r/WDE4/WDE/LGFULL12/D/C.mp4

DUPTYPE_WITHIN_SAME_TREE -70405 2 30695973 2065 29886532 3 
        /media/r/WDE4/WDE/LGR40/C.mp4

DUPTYPE_FIRST_OCCURRENCE 195982 2 30953302 2065 49172850 3 
        /media/r/WDE4/WDEX/P/d/MVI_1762.AVI

DUPTYPE_WITHIN_SAME_TREE -195982 2 30953302 2065 49172073 3 
        /media/r/WDE4/WDEX/P/zMVI_1762.AVI

DUPTYPE_WITHIN_SAME_TREE -195982 2 30953302 2065 49173627 3 
        /media/r/WDE4/WDEX/P/MVI_1762.AVI

DUPTYPE_WITHIN_SAME_TREE -195982 2 30953302 2065 49176978 3 
        /media/r/WDE4/WDEX/G/MVI_1762.AVI

DUPTYPE_FIRST_OCCURRENCE每一行都以仍然存在的文件或DUPTYPE_WITHIN_SAME_TREE已被删除的文件开头。

我想提供一个文件夹名称,并让所有文件夹恢复其原始文件。例如,假设/media/r/WDE4/WDEX/P所有 P 文件夹都将恢复其原始文件 - 在本例中为MVI_1762.AVIzMVI_1762.AVI。如果我要求 ,/media/r/WDE4那么所有内容都将恢复。

请注意,列表按大小排序,因此P整个results.txt文件中可能有许多属于的文件。也不rdfind使用实际文件名来查找重复项。

一些伪代码:

loop  
   Look for a FIRST line  
   Save that lines file's details as X  
   Look at every TREE line  
     If it contains the supplied path  
        copy the file X to the supplied path  
        rename the file to the name in this TREE line  
endloop

谢谢。

答案1

只需简单的 bash 就足够了:

src=""
cat results.txt | while { read op o1 o2 o3 o4 o5 o6 file ; } do
    if [ "$op" == "DUPTYPE_FIRST_OCCURRENCE" ] ; then 
        src="$file"
    elif [ "$op" == "DUPTYPE_WITHIN_SAME_TREE" ] ; then 
        echo "Copying " "$src" " to " "$file"
        cp "$src" "$file" 
    else
        echo "ignoring $op"
    fi 
done 

相关内容