查找未找到所有文件

Hebbo

我具有以下文件/目录结构:

tsunami # find .
.
./dir1
./dir1/dirinner
./dir1/dirinner/innerfile
./logs
./messages

我试图递归地查找文件,并使用查找/执行来处理它们。

找到的版本(附带busybox的)不允许使用所发现的文件名不止一次在exec命令类似讨论在这里因此,我使用了建议的解决方案之一。所以,我重新写了这个:

find  * -type f -exec echo {}  +

对此:

find  * -type f -exec sh -c 'echo $0' {}  +

但是新版本仅找到最里面的文件,而没有找到其他文件。

这是两个的输出:

tsunami # find  * -type f -exec echo {}  +
dir1/dirinner/innerfile logs messages
tsunami # find  * -type f -exec sh -c 'echo $0' {}  +
dir1/dirinner/innerfile

我该如何解决?我需要它来查找所有文件,而不仅仅是最里面的一个。

卡米尔·马乔洛夫斯基(Kamil Maciorowski)

我假设echo只是您要进行实验的豚鼠(唯一find . -type f可以完成文件路径的打印)。

在我的回答find . …find * …,为了简单起见,我使用代替-。如果您有使用Shell Globing的理由,请继续。

您的问题是因为-exec … {} +语法一次代替了许多路径{}因此,-exec sh -c 'echo $0' {} +sh有很多参数的情况下,但$0仅涉及一个参数,其余参数未使用。

使用"$@",就意味着"$1" "$2" "$3" …因为它跳过了,所以$0您需要提供一个额外的(虚拟)参数。对于sh我使用sh

find . -type f -exec sh -c 'echo "$@"' sh {} +

还要注意,如果发现一个命令行无法处理太多文件,则会运行多个sh-s(因此多个echo-s)。


替代-exec … {} +使用-exec … \;

find . -type f -exec sh -c 'echo "$0"' {} \;

这将为sh每个文件单独运行,这样$0就足够了。

另一个不同之处是:大多数find实现都要求{}之前+,但是在\;这种情况下,{}可能介于-exec之间\;代表着:

  • -exec foo {} bar + 是无效的;
  • -exec foo {} bar \; 还可以

不过,这种差异在您的特定情况下并不重要。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找未找到应有的所有文件

来自分类Dev

查找未找到文件

来自分类Dev

TFS2015构建在所有未找到“文件未找到”的命令行命令上失败

来自分类Dev

lapply函数在igraph中查找邻居(当未找到所有节点时)

来自分类Dev

抓住文件夹中所有文件的VBA代码未找到文件

来自分类Dev

如何查找到给定文件/目录的所有符号链接?

来自分类Dev

替换未找到所有匹配项

来自分类Dev

BeautifulSoup并未找到所有标签

来自分类Dev

BeautifulSoup抓取未找到所有'a'标签

来自分类Dev

sh:所有命令“未找到”

来自分类Dev

用字符串移动pdf并在所有文件搜索中找到ok或未找到

来自分类Dev

如何连续记录日志,查找所有文件(sed)和显示(显示)找到的文件

来自分类Dev

重定向dotvvm中所有未找到的路由

来自分类Dev

SignTool错误:未找到符合所有给定条件的证书

来自分类Dev

在nginx上所有“未找到” Laravel路线

来自分类Dev

未找到所有 cv2 函数

来自分类Dev

Lucene.Net:搜索未找到所有值

来自分类Dev

在哪里声明 Angular 捕获所有(未找到)路线

来自分类Dev

尽管满足了所有要求,但未找到 DSL implementation()

来自分类Dev

未找到文件:-Ttext

来自分类Dev

未找到 NMSSH 文件

来自分类Dev

文件未找到错误:

来自分类Dev

在UNIX上查找到文件的所有符号链接和硬链接

来自分类Dev

查找到达特定文件夹的所有符号链接

来自分类Dev

即使该位置有图像,文件未找到异常

来自分类Dev

.htaccess重写文件未找到

来自分类Dev

R未找到或读取文件

来自分类Dev

Xamarin文件未找到异常

来自分类Dev

.htaccess重写文件未找到