如何在此文件结构中生成DEBIAN / md5sums文件?

时间:2015-05-05 10:35:23

标签: linux ubuntu debian md5sum

我有以下文件结构来构建Debian包,它不包含任何二进制文件(编译任务):

<div id="layout">
<div id="cover">
      
      <div class="hold-img" style="background-image:url('http://o.aolcdn.com/hss/storage/adam/251ba9d4b7db2c58ef46af60de813ebe/f9xcnp12WNl7B64E5MPAkpznF7v.jpg');background-repeat:no-repeat;
background-position: center center;background-size:cover;"></div>
     
</div>

<!-- 
Big Image - http://o.aolcdn.com/hss/storage/adam/251ba9d4b7db2c58ef46af60de813ebe/f9xcnp12WNl7B64E5MPAkpznF7v.jpg

Half-image - http://wac.450f.edgecastcdn.net/80450F/comicsalliance.com/files/2014/03/SpaceJam02.jpg
-->
</div>

source/ source/DEBIAN source/etc source/usr build.sh 文件的内容是:

build.sh

问题是这里的md5sum命令在制作#!/bin/bash md5sum `find . -type f | awk 'source/.\// { print substr($0, 3) }'` > DEBIAN/md5sums dpkg-deb -b source <package-name_version>.deb 文件时也会考虑DEBIAN/个文件。我想要除md5sum进程中的DEBIAN/md5sums文件外。

3 个答案:

答案 0 :(得分:1)

尝试过滤查找结果,例如grep -v要排除:

find . -type f | grep -v '^./source/DEBIAN/' | ...

或者你也可以在awk中进行过滤......

答案 1 :(得分:1)

find可以忽略指定其路径中的模式的文件:

find . -type f -not -path "*DEBIAN*"

答案 2 :(得分:0)

您的Awk脚本包含语法错误,也可能包含某种逻辑错误。我想你的意思是

md5sum $(find ./source/ -type f |
  awk '!/^\.\/source\/DEBIAN/ { print substr($0, 3) }') > DEBIAN/md5sums

等效地,您可以从source/DEBIAN命令行中排除find;但是既然你显然想要用Awk对输出进行后处理,那么将排除因素分解为Awk脚本是有道理的。

`backticks`$(dollar-paren)命令替换的升级并非绝对必要,但不过可能是一个好主意。

显然,此代码是从脚本中复制/粘贴的,该脚本使用substr./的输出中删除前导find。如果(如注释中所示)您希望删除更多内容,则必须重构脚本,因为您无法(轻松)提供与md5sum相关的路径,这些路径与当前目录无关。但是将更多代码移动到find并使用更简单的Awk脚本修剪输出可以正常工作:

find ./source -path '*/DEBIAN' -prune -o -type f -exec md5sum {} \; | 
awk '{ print $1 "  " substr($2, 10) }'