我有以下文件结构来构建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
文件外。
答案 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) }'