我需要通过查看查找文件中存在的Md5校验和值来从目录中删除文件。
查找文件值-md5lkp.txt
aac2050c8f3a0b6de33c6a0976a77c77 TEST_20190505060848.csv
c36c63d1b0dcf0a34a6285597ae67e93 TEST_20190505130157.csv
e72caf404c85d712971fa5b491204a58 TEST_20190506060803.csv
6c8dba8210a7df31aecd8b08c015919e TEST_20190506130210.csv
782f1233c6e0a7763e41dd372834253f TEST_20190507061001.csv
目录中的文件-/ 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
答案 0 :(得分:0)
尝试一下:
#!/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)
答案 1 :(得分:0)
能够实现以下目标
#!/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