以下是我所追求的,但是无论我如何转义{}
和执行,我的代码都无法正常工作+
;
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命令中直接完成此操作?
我会尝试使用一个单一的发现,像:
find .*/ -maxdepth 1 -type f -name '*.ini' -execdir md5sum {} +
甚至(根本不行find
,只是shell出现问题)
md5sum .*/*.ini
尽管它缺少-type f
检查,所以仅当您没有以结尾的目录/非文件时才有效.ini
。如果可以的话,您可以使用
for x in .*/*.ini; do
if [ -f "$x" ]; then
md5sum "$x"
fi
done
但是,这将失去仅需要一次md5sum调用的优势。
编辑
对于一般且安全的链接方法find
,您可以执行以下操作
find <paths> <args> -print0 | xargs -0 -I{.} find {.} <args for second find> [etc.]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句