【问题标题】:Cat files into a new files in multiple sub directories将cat文件放入多个子目录中的新文件
【发布时间】:2018-10-04 18:24:15
【问题描述】:

我希望能够在文件夹中找到子目录 然后在每个子文件夹中找到 .txt 文件 然后将每个子文件夹中的这些文件 CAT 到该文件夹​​中的一个新的 .txt 文件中。

这是我现在正在使用的,但它不起作用:

找到 . -type d -exec find .{} -type f -iname .txt \; -exec cat {} >> all.txt \;

任何帮助将不胜感激。

谢谢 乙

【问题讨论】:

  • 请注意您的 2 个标签的“观察者”数量较少。最好指明 unix/linux、bash/ksh/csh(?)/etc。仅从 . 目录中搜索 -type f -name '*.txt' 有什么问题?把事情简单化;-)。阅读 \+ 而不是 \; 以提高效率(或 xargs)。祝你好运。

标签: cat subdirectory


【解决方案1】:

使用 Bash for 循环,这应该可以工作:

for sub_dir in $(find ./ -type d -not -name '.'); do
    cat $sub_dir/*.txt > $sub_dir/all.txt;
done

使用 find 找到的所有子目录(不包括 . 目录)并在每个子目录上发出一个 cat。

【讨论】:

  • 感谢您的提示,但它似乎不起作用。我明白了这个概念,它似乎应该可以工作,但是唉,我的 all.txt 文件仍然是空的。我会继续插电。
  • 你用的是什么外壳?我在 bash 中尝试过,得到了想要的结果(除了没有 *.txt 文件的子目录的一些错误。
  • 我使用了错误的外壳。一旦切换到 bash,它确实可以正常工作。谢谢!!!
【解决方案2】:

找到 . -name "*.txt" -type f -exec cat {} + > all.txt

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 2018-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多