由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 怎么用bash在for loop里给文件名用counter?
相关主题
Perl 6 改动很大很恶心如何实现N层循环嵌套
请教如何通过FILE指针删除文件?怎样阻止MenuSelect事件Block住程序运行?
一个popen加gzip的问题一个怪怪的bug
这个python code能否优化去掉file write新手弱问:怎么让VC记住新添加的库文件?
how to assign new value to loop variables?问一个打开文件的问题
LabVIEW问题:对高手来说很简单!匹配问题 (转载)
请教一道练习题(C,OS)C++文件名读取一问
【包子求助】20M*20M的loop怎么搞?问个c的问题
相关话题的讨论汇总
话题: file话题: 文件名话题: bash话题: hmmbuild话题: loop
进入Programming版参与讨论
1 (共1页)
o******n
发帖数: 511
1
我这个问题超级新手,请大家帮下忙:
有一堆文件,名字从bactNOG00001.sto到bactNOG70000.sto,我要从bactNOG30000.sto
开始,执行一个hmmbuild的命令,原本的bash loop,假设直接开始,是这样的:
for d in easel/bactNOG/*.sto; do hmmbuild --amino --fast $d.profile $d; done
下面我写的这个,从bactNOG00001开始执行hmmbuild,我知道为啥不对,因为计数应该
是在文件名里,但i计数不影响$d的计数:
i=30000
for d in easel/bactNOG/*.sto; do let i+=1; hmmbuild --amino --fast $d.
profile $d; done
那怎么在for loop里给文件名计数呢?谢谢啦!
s***o
发帖数: 6934
2
google result first one 'bash for loop'...
http://www.cyberciti.biz/faq/bash-for-loop/
o******n
发帖数: 511
3
我还看了这个的,看来没仔细看。
你说的是这个吗:
#!/bin/bash
for file in /etc/*
do
if [ "${file}" == "/etc/resolv.conf" ]
then
countNameservers=$(grep -c nameserver /etc/resolv.conf)
echo "Total ${countNameservers} nameservers defined in ${file}"
break
fi
done
其实我可以跳开前面几万个文件,类似底下这个方法:
#!/bin/bash
FILES="$@"
for f in $FILES
do
# if .bak backup file exists, read next file
if [ -f ${f}.bak ]
then
echo "Skiping $f file..."
continue # read next file and skip cp command
fi
# we are hear means no backup file exists, just use cp command to
copy file
/bin/cp $f $f.bak
done
w****k
发帖数: 6244
4
给文件名计数是什么意思?
你说清楚你想要什么output吧

sto
done

【在 o******n 的大作中提到】
: 我这个问题超级新手,请大家帮下忙:
: 有一堆文件,名字从bactNOG00001.sto到bactNOG70000.sto,我要从bactNOG30000.sto
: 开始,执行一个hmmbuild的命令,原本的bash loop,假设直接开始,是这样的:
: for d in easel/bactNOG/*.sto; do hmmbuild --amino --fast $d.profile $d; done
: 下面我写的这个,从bactNOG00001开始执行hmmbuild,我知道为啥不对,因为计数应该
: 是在文件名里,但i计数不影响$d的计数:
: i=30000
: for d in easel/bactNOG/*.sto; do let i+=1; hmmbuild --amino --fast $d.
: profile $d; done
: 那怎么在for loop里给文件名计数呢?谢谢啦!

i***r
发帖数: 1035
5
you can use an array
FILE=(*.sto)
i=3000
while [ $i -lt 7000 ]
do
echo ${FILE[$i]}
done
c****f
发帖数: 1102
6
如果我能理解你要什么....我就帮你写了..看了3遍没看懂
你改一下我写的这个就行了
for x in `seq 30000 70000`;do echo bactNOG$x; done
f**y
发帖数: 138
7
`seq 30000 70000` needs lots of memory to hold the result.
Suggest the following
for ((i = 30000; i <= 70000; i ++)); do
file="bactNOG$i.sto"
# do whatever with $file
done
v*******e
发帖数: 11604
8
楼主,学这个是浪费生命。直接使用python或者perl解决。学一天就上手,做完了你的
bash script还没写好呢。
o******n
发帖数: 511
9
谢谢楼上各位,我周末忘记来回帖了。我后来用了二楼链接里一个例子的办法,绕过前
30000个文件再执行hmmbuild命令,就好了。
我本来的问题是,文件名是bactNOG00001,bactNOG00002等等,怎么在for loop里在这
些文件名里用上类似i=1,i=i+1的计数器。6,7楼的回复就是这个意思。:)
1 (共1页)
进入Programming版参与讨论
相关主题
问个c的问题how to assign new value to loop variables?
问个问题.shell/perlLabVIEW问题:对高手来说很简单!
[合集] 请问VC++里面有自带的矩阵运算的库函数吗?请教一道练习题(C,OS)
xterm的title恢复问题 (转载)【包子求助】20M*20M的loop怎么搞?
Perl 6 改动很大很恶心如何实现N层循环嵌套
请教如何通过FILE指针删除文件?怎样阻止MenuSelect事件Block住程序运行?
一个popen加gzip的问题一个怪怪的bug
这个python code能否优化去掉file write新手弱问:怎么让VC记住新添加的库文件?
相关话题的讨论汇总
话题: file话题: 文件名话题: bash话题: hmmbuild话题: loop