2016-04-12 7 views
0

Ich habe eine Menge von Dateien in meinem Verzeichnisberechnen MD5 alle Dateien die eine Liste

/home/files/* 

ich auch eine TXT-Datei, die enthält den Pfad zu einigen Dateien von meinem Verzeichnis ohne, z.B.

/home/files/file1 
/home/files/file2 
... 

Nun möchte Ich mag die MD5-Summe aller Dateien in meinem Verzeichnis ohne denen, die in meiner .txt-Datei aufgelistet berechnen.

Bis jetzt habe ich folgenden Code:

find /home/files/* -type f -mmin -5 -exec grep /home/list.txt md5sum {} >> /home/MD5.txt \; 

Was muss ich ändern tun, dass dies wie erwartet?

Antwort

1

Mit find und xargs:

find /home/files/* -type f -print0 | xargs -0 -L1 bash -c 'grep -qL "${1##*/}" /home/list.txt || md5sum "$1"' \; > md5.txt 
+0

Great! Darüber hinaus ist man flexibler in der Dateiverwaltung. – mediii

1

Dies sollte funktionieren:

find /home/files/* -type f -exec bash -c 'grep -qv "$1" /home/list.txt && md5sum "$1"' - {} \; >/home/MD5.txt 
0

Oder alternativ mit für und wenn :)
Datei mit Dateien Liste:

cat /home/centos/list.txt 
/home/centos/files/1 
/home/centos/files/3 

Verzeichnis:

ls files/ 
1 2 3 4 5 

Befehl:

for i in `ls -d -1 /home/centos/files/*`; do if [ `grep -e $i list.txt` ]; then md5sum $i >> md5.txt; fi; done; 

Datei mit md5s:

cat md5.txt 
d41d8cd98f00b204e9800998ecf8427e /home/centos/files/1 
d41d8cd98f00b204e9800998ecf8427e /home/centos/files/3 
+0

Ich denke, das ist ein guter Weg, wenn Sie sich Dateien ansehen möchten, die älter oder jünger als Tage sind. Leider klappt es mit Minuten nicht. Aber danke fürs Teilen. – mediii

Verwandte Themen