在 find 命令中使用文件而不是目录

红色的

我正在对存储在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

  1. 参见例如CP: max source files number arguments for copy utility

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Linux中使用`find`命令删除非空目录?

使用find命令,但排除两个目录中的文件

在Linux中使用find命令尝试匹配文件名时忽略大小写

在find -exec中使用命令替换

如何使用find命令检查目录大小?

在Unix中使用find命令时忽略“是目录”结果

如何使用“ find”命令限制对目录的搜索?

在find命令中如何在文件名中使用变量?

使用find + xargs移动文件:目标不是目录?

使用find -exec将msgfmt命令递归应用于目录中的所有.po文件

在find命令中使用for循环

如何使用单个find命令搜索文件和目录

如何使用linux find命令打印内容而不是文件名?

如何在sed和awk中使用find命令从文件中删除重复的IP

在Linux(Fedora-20)中如何在find命令中使用目录参数

如何在目录和子目录中使用find命令重命名文件的一部分

如何在Linux中使用“ find”命令按路径排除某些文件夹?

使用find和rm命令删除目录中的文件以及目录本身

在find命令中使用exec时出错

如何在scp命令中使用find

如何在每个目录中创建一个 .txt 文件,该文件被称为使用 find 命令的目录

在 Excel 宏中使用 Match() 而不是 Find()

使用 find 命令过滤文件,将输出排序到目录中

如何在Linux中使用'find'命令获取找到的文件的绝对路径?

仅在子目录中使用 find 删除某些文件

在 sunOS 中使用 find 命令比较两个目录中的所有文件

从 find 命令的目录列表中查找最近的文件

如果使用 Find 或 Grep 命令在其中找到特定文件,则删除整个目录

仅在特定目录中使用 find 命令查找文件,即使该文件存在于其他目录中