удалить файл, посмотрев контрольную сумму md5, указанную в поисковом файле - PullRequest
0 голосов
/ 10 мая 2019

Мне нужно удалить файлы из каталога, посмотрев на значения контрольной суммы Md5, присутствующие в файле поиска.

Значения файла поиска - md5lkp.txt

aac2050c8f3a0b6de33c6a0976a77c77  TEST_20190505060848.csv
c36c63d1b0dcf0a34a6285597ae67e93  TEST_20190505130157.csv
e72caf404c85d712971fa5b491204a58  TEST_20190506060803.csv
6c8dba8210a7df31aecd8b08c015919e  TEST_20190506130210.csv
782f1233c6e0a7763e41dd372834253f  TEST_20190507061001.csv

Файлы в каталоге dir - / home/ usr1

TEST_20190505060848.csv
TEST_20190505060850.csv
TEST_20190506130210.csv
TEST_20190506130212.csv

Из приведенного выше списка 2 файла должны быть удалены

TEST_20190505060848.csv
TEST_20190506130210.csv

Пожалуйста, сообщите.

Способна решить эту проблему следующим образом:


#!/bin/bash

lkpfile=$1

for i in *.csv
do
        md5check=`md5sum $i | cut -d' ' -f1`
        echo "current file $i md5 is $md5check"
        delfile=`grep -r $md5check $lkpfile`
        echo "delfile : $delfile"
        delfilename=`echo $delfile|awk -F' ' '{print $2}'`
        echo "deleting : $delfilename"
        rm $delfilename
done

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

В состоянии достичь этого, как показано ниже

#!/bin/bash

lkpfile=$1

for i in *.csv
do
        md5check=`md5sum $i | cut -d' ' -f1`
        echo "current file $i md5 is $md5check"
        delfile=`grep -r $md5check $lkpfile`
        echo "delfile : $delfile"
        delfilename=`echo $delfile|awk -F' ' '{print $2}'`
        echo "deleting : $delfilename"
        rm $delfilename
done
0 голосов
/ 11 мая 2019

попробуйте это:

#!/bin/bash
mapfile -t hashs < <(cut -d " " -f1 md5ljp.txt)
while read -r file; do
    sum=$(md5sum "$file")
    [[ ${hashs[*]} =~ ${sum%% *} ]] && rm "$file"
done < <(ls ./*.csv)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...