非递归地使用“查找”?

Dee*_*ace 34 shell find

使用/bin/find /root -name '*.csv'回报:

/root/small_devices.csv
/root/locating/located_201606291341.csv
/root/locating/located_201606301411.csv
/root/locating/g_cache.csv
/root/locating/located_201606291747.csv
/root/locating/located_201607031511.csv
/root/locating/located_201606291746.csv
/root/locating/located_201607031510.csv
/root/locating/located_201606301412.csv
/root/locating/located_201606301415.csv
/root/locating/located_201607031512.csv
Run Code Online (Sandbox Code Playgroud)

我实际上并不想要 . 下的所有文件/root/locating/,因此预期的输出只是/root/small_devices.csv.

是否有一种非递归使用“查找”的有效方法?

如果重要的话,我正在使用 CentOS。

Sun*_*eep 53

你可以用-maxdepth选项来做到这一点

/bin/find /root -maxdepth 1 -name '*.csv'
Run Code Online (Sandbox Code Playgroud)

man find

-最大深度级别

在起点以下的目录的大多数级别(非负整数)级别下降。

-最大深度 0

意味着仅将测试和操作应用于起点本身。

  • 有时您可能还想指定 `-mindepth 1`。例如,`find /csv -maxdepth 1 -name '*csv'` 在其输出中包含 `/csv`(深度为 0),而 `find /csv -mindepth 1 -maxdepth 1 -name '*csv '` 没有。 (3认同)

Kus*_*nda 10

标准find

find /root ! -path /root -prune -type f -name '*.csv'
Run Code Online (Sandbox Code Playgroud)

这将从搜索中修剪(删除)所有目录,目录本身/root除外/root,并继续打印与*.csv.

使用 GNU find(以及任何其他find理解的实现-maxdepth):

find /root -maxdepth 1 -type f -name '*.csv'
Run Code Online (Sandbox Code Playgroud)