簡體   English   中英

使用bash中的目錄名循環

[英]Looping using the name of directories in bash

示例文件:

sample1_day1 /

sample1.str

sample1.yy

sample1_ABC.log

sample2_day1 /

sample2.str

sample2.yy

sample2_ABE.log

sample3_day1 /

sample3.str

sample3.yy

sample3_ASC.log

我用它來遍歷文件:

for i in `echo *$FILTER | sed 's/'$FILTER'//'`;do
    "something here";
done

在這種情況下,這將獲得“標識符”,“ sampleX”,但是當我使用它遍歷文件夾時,它失敗了。

我需要將$i分配為“名稱標簽”,以方便命名程序所需的輸出和輸入文件:

for i in something; do
    "program --input $i.str --input2 $i.yy --out $i\_clean.txt"
done

我希望我的bash腳本在給定文件夾(即sample1_day1等)的情況下獲取“ sampleX's”的名稱,並列出sampleX的列表,使用此標識符將cd (例如cd $i\\_day1cd $i\\_day1文件夾並在其中進行一些分析。該文件夾,隨后命名輸出和輸入。

簡而言之,我如何只獲取sample1和sample2和sample3並將它們表示為i?

謝謝

for i in */ ; do
    "program --input $i.str --input2 $i.yy --out $i\_clean.txt"
done

如果只是sample1,sample2,sample3,那么這也將起作用-

for i in {1..3}
do
"program --input sample"$i".str --input2 sample"$i".yy --out sample"$i"\_clean.txt"
done

@fedterzi的答案的小修改版本。 即使您存在具有不同名稱的目錄,此選項也僅有助於在示例_day1 示例 _day *內部進行導航。

#!/bin/bash
for i in sample*_day1/ ; do
    cd $i
    "program --input $i.str --input2 $i.yy --out $i\_clean.txt"
done

在閱讀了將近幾個小時之后,我意識到缺少的東西:表示其屬性的“ /”。

但是當然。 然后我在@Parthiban和@fedterzi的回答中也注意到了這一點(謝謝大家!)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM