我有一个循环,我想在不同的目录/文件夹中运行。 目录名称是:a,b,c,d,e,...
我的循环是:
cd */
for i in Test_*_hit.txt; do cut -f1,2 $i > ${i%.txt}2.txt; done
但是没有工作(没有这样的文件或目录),我该怎么办?
答案 0 :(得分:3)
for i in a b c d e
do
(cd $i/; for i in Test_*_hit.txt; do cut -f1,2 $i > ${i%.txt}2.txt; done)
done
答案 1 :(得分:2)
有很多方法可以做到这一点,但是一种(Bourne shell)方法是
for d in <directories>
do
(cd "$d" && <commands>)
done
这使用子shell(parens中的东西)来改变目录&amp;在该目录中执行您想要执行的操作,这样可以避免必须记住您所在的目录。