Esta utilidad busca archivos duplicados comprobando el hash CRC32.
Citar
- Modo de empleo:
FINDUS [OPCIONES] [RUTA]- Opciones:
[-R] Habilita la búsqueda recursiva de subdirectorios.- Ejemplos:
FINDUS "%CD%"
FINDUS -R "C:\Windows"
Código (ruby) [Seleccionar]
# -*- coding: UTF-8 -*-
require "zlib"
exit if Object.const_defined?(:Ocra)
def logo()
print '
_______ __ _____ ___ ________ ____ ____ ________
/" "| |" \\ (\\" \\|" \\ |" "\\ (" _||_ " | /" )
(: ______) || | |.\\\\ \\ | (. ___ :) | ( ) : | (: \\___/
\\/ | |: | |: \\. \\\\ | |: \\ ) || (: | | . ) \\___ \\
// ___) |. | |. \\ \\. | (| (___\\ || \\\\ \\__/ // __/ \\\\
(: ( /\\ |\\ | \\ \\ | |: :) /\\\\ //\\ /" \\ :)
\\__/ (__\\_|_) \\___|\\____\\) (________/ \\__/ (_______/
Find Duplicates v1.0 By Elektro H@cker
'
end
def help()
print '
Este programa busca archivos duplicados comprobando el hash CRC32.
[*] Modo de empleo:
FINDUS [OPCIONES] [RUTA]
[*] Opciones:
[-R] Habilita la búsqueda recursiva en subdirectorios.
[*] Ejemplos:
FINDUS "%CD%"
FINDUS -R "C:\Windows"
'
Process.exit
end
def errorcontrol()
if ARGV.empty?
help
elsif ARGV.length == 2 and not File.directory? (ARGV[1])
help
elsif ARGV.length == 1 and not File.directory? (ARGV[0])
help
end
if ARGV[0] =~ /-r/i
$folder = ARGV[1]
Dir.chdir($folder)
resursive = File.join("**", "*.*")
$files = Dir.glob(resursive)
elsif
$folder = ARGV[0]
Dir.chdir($folder)
not_resursive = File.join("*.*")
$files = Dir.glob(not_resursive)
end
end
logo
errorcontrol
$list = ""
# Listar los archivos del directorio
File.open("#{ENV['TEMP']}\\dir.txt", 'w+') do |file|
file.puts $files
end
# Comparar el crc de cada archivo listado
File.read("#{ENV['TEMP']}\\dir.txt").each_line { |line|
begin
file = File.read(line.strip) ; nil
file_crc = Zlib.crc32(file,0).to_s(16)
file_size = File.size(line.strip)
if $list[file_crc.to_s]
print "#{$folder}\\#{line.strip.gsub('/', '\\')}\n#{$list.split(file_crc).first.split(")").last.split("\n\n").last}#{file_crc})\n\n"
end
$list << "#{$folder}\\#{line.strip.gsub('/', '\\')}\n(CRC32: #{file_crc}) (BYTES: #{file_size})\n\n"
rescue
print "Archivo inaccesible #{$folder}\\#{line}"
end
}
__END__
PD: Tiene algunos fallos en los permisos de las carpetas especiales de windows
Saludos.