BASH skrypt znajdujący identyczne pliki


(Lasinski Jacek) #1

Witam.

Tak jak w temacie potrzebuję napisać skrypt który będzie znajdował w określonej lokalizacji i podfolderach pliki które będą miały identyczne nazwy i rozmiary.

to co udało mi się wymyślić i znaleźć w internecie.

#!/bin/bash

fullList=$(find . -type f | awk -F '/' '{print $NF,$0}' | sort +0 -1)

fileNames=$(find . -type f | awk -F '/' '{print $NF}' | sort | uniq -d)

fileSize=$(find . -type f -printf "%p - %s\n" | sort -nr -k3 | uniq -D -f1)


#awk -F '/' '{print $NF,$0}' 


for EACH in $fileNames; do

        echo "$fullList" | grep -wE "^$EACH "

done


echo "$fileSize" 


exit 0

nie wiem jak połączyć sprawdzenie nazw i rozmiarów. Teraz odbywa się to oddzielnie. -- Dodane 24.04.2012 (Wt) 13:17 -- Może komuś się przyda. Działa.

#!/bin/bash

lista=$(find . -type f | awk -F '/' '{print $NF,$0}' | sort +0 -1) #utworzenie listy wszystkich plików

nazwy=$(find . -type f | awk -F '/' '{print $NF}' | sort | uniq -d) #utworzenie listy z plikami powtarzajacymi się

rozmiary=$(find . -type f -printf "%f %p %s\n" | sort -nr -k3 | uniq -D -f2) #utowrzenie listy z plikami o

#tych samych rozmiarach


#-printf "%p - %s\n"

# find . -type f -printf "%p - %s\n" | sort -nr -k3 | uniq -D -f1 SAME ROZMIAR

# find . -type f -ls | awk '{print $NF,$7}' | sort +0 -1 DO DO LISTY PLIKOW ROZM

# find . -type f -ls | awk '{print $7}' | sort | uniq -d DO POJEDYNCZYCH PLIKOW ROZM


echo "Pliki o indetycznych nazwach:"

for EACH in $nazwy; do #dopasowywanie plikow z jednej listy do drugiej

        echo "$lista" | grep -wE "^$EACH "

done

echo ""

echo "Pliki o identycznych nazwach i rozmiarach:" 


for EACH in $nazwy; do

        echo "$rozmiary" | grep -wE "^$EACH " 

done

exit 0