我追求的是以下内容,但是无论我如何转义{}
和+
;
find ./ -maxdepth 1 -type d -name '.*' -exec \
find {} -maxdepth 1 -type f -name '*.ini' -exec \
md5sum \{\} \\; \;
看到Unix-&-Linux问题之后,我发现以下代码可以工作,但它不是嵌套find,因此我怀疑有更好的方法来完成此特定工作。
find ./ -maxdepth 1 -type d -name '.*' \
-exec bash -c 'for x; do
find "$x" -maxdepth 1 -type f -name "*.ini" \
-exec md5sum \{\} \;; \
done' _ {} \+
有没有什么方法可以嵌套,find -exec
而无需调用外壳(如上),并具有所有引人注目的引用和转义约束?
还是可以使用多个参数的混合,在单个find命令中直接完成此操作?
4
尽管可以按照您的要求进行操作,但是当事情变得如此复杂时,我会切换到Shell或Perl脚本。您的第二个代码段几乎是这样做的,仅使用内联的Shell脚本。英勇的一线好客,但他们很难理解,因此很难维护。除非这是一次单笔交易,但是您最终还是会擅长于此,否则除了智力上的挑战,我看不出有这样做的充分理由。
—
沃伦·杨
@沃伦·杨(Warren Young):我当然不认为这个概念很复杂,但是我想您的意思是,没有简单的方法可以解决这个问题,
—
Peter.O 2011年
find
但是如果find
不能这样做,那为什么会find
如此受人尊敬(?)作为工具-可以用来查找文件吗?...我已经成功地找到了适合find ./ -maxdepth 2 -path '.*/*.ini' -type f -exec md5sum {} \+
我的情况(jw013的参考将其-prune
引导至手册页中),但是我想知道这是否是一种可靠的方法(一般而言)。我从来没有真正使用过find
(在不到一年的Linux中)locate
做我几乎需要做的所有事情,所以这是未知领域。
该
—
rozcietrzewiacz 2011年
-path
测试正是我要建议的。有了这个,您应该就能做所有想做的事情(对Ace Of Base协会表示抱歉;))