【问题标题】:Loop over directories [duplicate]循环目录[重复]
【发布时间】:2015-12-30 11:30:53
【问题描述】:

我不确定如何在 shell 中处理目录场景的目录。

我的文件夹结构如下。
目录结构:

/DirA/DirA1/DirA11/*.txt  
/DirA2/DirA21/*.txt
/DirA3/DIrA31/*.txt'

我是 shell 脚本的新手,不知道如何阅读这些文本文件。

【问题讨论】:

  • “阅读这些文本文件”是什么意思?你想对他们做什么?
  • 在遇到问题时提出问题比在尝试之前提出问题要好。作为提示,使用两个 find 应该可以帮助您:find . -type d -iname DirA* -exec find {} -iname *.txt \;。此命令为您提供包含 DirA* 的路径下的所有 *.txt 文件。
  • @BarisDemiray 您需要引用模式以防止外壳扩展它们。
  • 感谢您的回复。我可以通过查看 stackoverflow.com/questions/2107945/… 来解决它

标签: bash shell command-line sh


【解决方案1】:
for f in /DirA/DirA1/DirA11/*.txt /DirA2/DirA21/*.txt /DirA3/DIrA31/*.txt; do
   # do stuff with $f
done

【讨论】:

【解决方案2】:

您可以使用 find 命令来处理目录树中具有特定属性的所有文件。例如,

find /DirA* -name '*.txt' 2>/dev/null

将列出您提到的树中名为 *.txt 的所有文件。请注意,如果您在名称掩码中使用通配符,则需要将它们单引号以保护它们免受 shell 的影响。

【讨论】:

猜你喜欢
  • 2021-02-08
  • 2015-07-14
  • 1970-01-01
  • 1970-01-01
  • 2012-01-20
  • 2014-06-17
  • 2011-09-03
  • 1970-01-01
相关资源
最近更新 更多