为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Bash遍历目录中的文件?

如何使用Bash遍历目录中的文件?

明月笑刀无情 2019-07-15 09:23:48
我需要编写一个脚本,以不同的参数启动我的程序,但我对Bash还是新手。我从以下几个方面开始我的节目:./MyProgram.exe Data/data1.txt [Logs/data1_Log.txt].下面是我想要做的事情的伪代码:for each filename in /Data do   for int i = 0, i = 3, i++     ./MyProgram.exe Data/filename.txt Logs/filename_Log{i}.txt   end forend for因此,我真的很困惑如何从第一个参数创建第二个参数,因此它看起来像是dataABCD_Log1.txt并启动了我的程序。
查看完整描述

3 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

很抱歉使线程亡灵,但是每当您通过全局遍历文件时,很好的做法是避免出现这样的情况:GLOB不匹配(这使得循环变量扩展到(不匹配的)GLOB模式字符串本身)。

例如:

for filename in Data/*.txt; do
    [ -e "$filename" ] || continue
    # ... rest of the loop bodydone

参考资料:撞击陷阱


查看完整回答
反对 回复 2019-07-15
?
UYOU

TA贡献1878条经验 获得超4个赞

for file in Data/*.txtdo
    for ((i = 0; i < 3; i++))
    do
        name=${file##*/}
        base=${name%.txt}
        ./MyProgram.exe "$file" Logs/"${base}_Log$i.txt"
    donedone

这个name=${file##*/}替代(壳参数展开)直到最后一次移除前面的路径名。/.

这个base=${name%.txt}替换移除尾随.txt..如果扩展可以改变的话,就会更加棘手。


查看完整回答
反对 回复 2019-07-15
  • 3 回答
  • 0 关注
  • 769 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信