gpt4 book ai didi

linux - 合并多个目录中的多个文件 - bash

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:02 28 4
gpt4 key购买 nike

我们有一个需求,循环多个目录,在每个目录中,会有多个Pattern File"n".txt的文本文件,需要合并成一个,File.txt

我们正在使用 Bourne Shell 脚本。

例子:

/staging/dusk/inbound/ --> Main Directory

Dir1
File1.txt,File2.txt,..sample1.doc,sample2.pdf,File*.txt --> we have to Merge the File name which starts with Fil*.txt -->Final.txt

Dir2
File1.txt,File2.txt,..attach1.txt,sample1.doc, File*.txt --> we have to Merge the File name which starts with Fil*.txt -->Final.txt

Dir3
File1.txt,File2.txt,File*.txt,..sample1,sample2*.txt --> we have to Merge the File name which starts with Fil*.txt -->Final.txt

Dir4
File1.txt,File2.txt,File*.txt,..temp.doc,attach.txt --> we have to Merge the File name which starts with Fil*.txt -->Final.txt

Di5
File1.txt,File2.txt,File*.txt,..sample1,sample2*.txt --> we have to Merge the File name which starts with Fil*.txt -->Final.txt

Dir"n"
File1.txt,File2.txt,File3.txt,File*.txt..attach1,attach*.txt --> we have to Merge the File name which starts with Fil*.txt -->Final.txt

可以循环使用每个目录中的文件cat *.txt > all.txt 命令。

但是我们如何循环目录呢?

最佳答案

从当前目录的所有直接子目录中连接 Fil*.txt

cat */Fil*.txt >Final.txt

为了访问任意深度嵌套的子目录,一些 shell 提供了 ** 作为扩展,但这与 POSIX sh 不兼容。

cat **/Fil*.txt >Final.txt

如果你真的想遍历你的目录并对每个目录做一些更复杂的事情,那就是

for d in */; do
: something with "$d"
done

或者类似地,对于支持**的shell,你可以遍历目录中的所有目录;

for d in **/; do
: something with "$d"
done

例如,:带有“$d”的东西可以是 cat "$d"/Fil*.txt >"$d"/Final.txt 来创建每个目录中的 Final.txt,其中仅包含该目录中的 Fil*.txt 文件。

关于linux - 合并多个目录中的多个文件 - bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48701103/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com