【问题标题】:Bash find in current folder and #name# sub-folder recursivelyBash 在当前文件夹和#name# 子文件夹中递归查找
【发布时间】:2012-01-19 16:01:26
【问题描述】:

对于像我这样的 bash 菜鸟来说,这是一个棘手的问题,但我相信这在我看来更容易。 我目前使用 find 命令如下:

run "find #{current_release}/migration/ -name '*.sql'| sort -n | xargs  cat >#{current_release}/#{stamp}.sql"

在我的 capistrano 食谱中。

问题是 #{current_release}/migration/ 包含子文件夹,我希望 find 命令仅包含其中一个,具体取决于它的名称(我知道,它基于目标环境。

总结一下,文件夹结构是

Folder
|- sub1
|- sub2

例如,我正在尝试查找指定仅在 sub1 上递归。我确信这是可能的,只是找不到方法。 谢谢。

【问题讨论】:

  • find #{current_release}/migration/sub1 不是你想要的吗?
  • 不,我可能没有很好地解释自己。目标是一次性列出当前文件夹和指定子文件夹中的所有文件,但不包括任何其他子文件夹。
  • 我更新了我的答案,希望是你的意思。

标签: bash shell find command-line-interface


【解决方案1】:

只需指定要查找的参数的目录,例如find #{current_release}/migration/sub1 ....

编辑:根据您的说明,您应该对find 使用-maxdepth 参数来限制递归深度。因此,例如,您可以使用find firstdir firstdir/sub1 -maxdepth 1

【讨论】:

  • 完美,非常感谢,不知道 maxdepth 选项!!
  • @pixelboy 您也可以使用-and -not -path 并指定您不希望find 搜索的路径。
【解决方案2】:

您只需将其附加到您的 find 调用中:

 find #{current_release}/migration/sub_you_want -name ...

根据您确定所需子目录的方式,您应该也可以编写脚本。

【讨论】:

  • 目标是一次找到当前文件夹和指定子文件夹中的所有文件,但没有任何其他子文件夹。
  • 抱歉 - 我错过了您问题的“和当前目录”部分。 @spatz 有它,假设您不需要在 sub1 中递归。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 2014-03-02
相关资源
最近更新 更多