在不同的目录中运行特定的循环

时间:2017-02-08 22:46:12

标签: loops unix directory

我有一个循环,我想在不同的目录/文件夹中运行。 目录名称是:a,b,c,d,e,...

我的循环是:

cd */
for i in Test_*_hit.txt; do cut -f1,2 $i > ${i%.txt}2.txt; done

但是没有工作(没有这样的文件或目录),我该怎么办?

2 个答案:

答案 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;在该目录中执行您想要执行的操作,这样可以避免必须记住您所在的目录。