我们需要循环多个directiories,并且在每个目录中都会有多个文本文件,其中Pattern File“n”.txt需要合并为一个,File.txt
我们正在使用Bourne Shell脚本。
示例:
node
每个目录中的文件都可以使用循环 cat * .txt> all.txt命令。
但是我们如何循环直播?
答案 0 :(得分:2)
从当前目录的所有直接子目录
中连接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
例如,: something with "$d"
可以cat "$d"/Fil*.txt >"$d"/Final.txt
在每个目录中创建Final.txt
,其中只包含该目录中的Fil*.txt
个文件。
答案 1 :(得分:0)
您可以尝试使用find命令
find /staging/dusk/inbound/ -name "*.txt" -type f -exec cat {} \;>>MergedFile.txt
答案 2 :(得分:0)
你可以采用ad-hok方式进行
find /staging/dusk/inbound -type f -name *.txt | sort -n | awk '{ print "cat " $1 " >> all.txt"}' > marge.sh
chmod +x marge.sh
sh merge.sh