我正在对存储在fdir
数组中的多个目录使用 find 命令来对每个文件执行 head 。如何调整代码以在 中使用文件fdir
?
nf=${#fdir[@]}
for (( i=0 ; i < $nf ; i++ )); do
find "${fdir[$i]}" -type f \
-exec head -v -n "$hn" '{}' +
done
GNUfind
命令的概要是
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression]
其中[starting-point...]
是零个或多个路径。它可能不是很有效,但是没有什么可以阻止您将文件作为起点传递。给定:
$ cat subdir/somefile
foo
bar
baz
然后
$ find subdir/somefile -type f -exec head -n 2 {} +
foo
bar
同样,无需将命令限制为单个起点 -除非您的数组足够大以超过内核的ARG_MAX
限制1,因此您可能可以这样做
find "${fdir[@]}" -type f -exec head -v -n "$hn" '{}' +
无论fdir
. 请注意,如果fdir
同时包含文件及其包含的导演,那么您将得到重复,例如:
$ fdir=(subdir subdir/somefile)
$ find "${fdir[@]}" -type f -exec head -n 2 {} +
==> subdir/somefile <==
foo
bar
==> subdir/somefile <==
foo
bar
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句