我有一个包含227个子目录的目录,每个目录都包含一个我要连接的同名文件(in.BV)。
即。
Directory
---------Subdirectory1
---------------in.BV various other files
---------Subdirectory2
---------------in.BV various other files
等
这些名为in.BV的文件只包含文本,我想简单地将它们连接成一个长文本文件。
我是新手,这是我到目前为止所尝试过的:
for d in */
do
(cd $d cat *in.BV >> Newin.txt)
done
这给了我一个空白Newin.txt
。这超出了我目前对bash脚本的理解。
提前致谢!
里奇
答案 0 :(得分:2)
假设您在Directory
目录中:
cat */in.BV >Newin.txt
假设你高于Directory
:
shopt -s globstar
cat **/in.BV >Newin.txt
shopt -u globstar
这会在globstar
中设置bash
shell选项。设置选项后,您可以使用**
匹配任何路径名(*
仅匹配路径名中的下一个/
,但**
匹配/
})。
在当前目录中创建cat
的{{1}}之后,我取消设置Newin.txt
选项。
如果您有很多文件,并且由于命令行变得太长而导致shell执行globstar
时出现问题,请参阅varlogtim's answer。
下面的评论中给出了新信息(文件将根据子目录名称按顺序连接):
假设你在cat
:
Directory
答案 1 :(得分:2)
示例:
SELECT *
FROM user_logins
WHERE user_agent NOT LIKE '%iPhone%'
AND user_agent NOT LIKE '%Linux; Android%'
order BY id DESC
LIMIT 1000
使用Exec查找:
root@dib:~# find ./ -type f -name in.BV
./test1/in.BV
./test1/test2/in.BV