计算除列表

时间:2016-04-12 12:49:10

标签: linux bash command-line grep find

我的目录中有很多文件

/home/files/*

我还有一个.txt文件,其中包含我目录的某些文件的路径,例如

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

现在我想计算目录中所有文件的MD5总和,而不是我的.txt文件中列出的文件。

到目前为止,我已经关注了代码:

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

我有什么改变,这会按预期工作?

3 个答案:

答案 0 :(得分:1)

findxargs

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

答案 1 :(得分:1)

这应该有效:

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

答案 2 :(得分:0)

或者 if :) 带文件列表的文件:

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

目录:

ls files/
1  2  3  4  5

命令:

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

使用md5s文件:

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