【问题标题】:awk: fatal: cannot open file ' for reading (No such file or directory)awk:致命:无法打开文件'进行读取(没有这样的文件或目录)
【发布时间】:2014-03-29 22:39:51
【问题描述】:

我有一个目录,其中包含许多扩展名为 .sum 的文件。 我使用以下脚本将所有 .sum 文件的内容列出到 temp.log 文件中。当第一个 .sum 文件被写入 temp.log 时,awk 实用程序似乎对剩余的 .sum 文件给出了错误。请帮忙,我在这里缺少什么。

cd $HOME/aphp/result/${test}



for filename in *.sum
do
tempdir=$filename
awk '/Failed/' "${filename}" > temp.log
awk '/Error/'  "${filename}" >> temp.log
    if [ -s temp.log ]
    then        

    mkdir -p ${scanresult}/${tempdir}
    mv temp.log ${scanresult}/${tempdir}/temp.log
    cd ${scanresult}/${tempdir}
    mv temp.log ${tempdir}_failed.txt
    else
    echo Skipping ${tempdir} scanning as it is executed 100 percent with no fail or error.
    rm temp.log      
    fi
done

错误:

awk: fatal: cannot open file `dss154.sum' for reading (No such file or directory)
awk: fatal: cannot open file `dss235.sum' for reading (No such file or directory)
awk: fatal: cannot open file `dss287.sum' for reading (No such file or directory)

ls -l *.sum

-rwxrwxrwx 1 smruti smruti 1844 Mar 25 16:23 dss103.sum
-rwxrwxrwx 1 smruti smruti 2353 Mar 25 16:40 dss154.sum
-rwxrwxrwx 1 smruti smruti 1023 Mar 25 16:43 dss235.sum
-rwxrwxrwx 1 smruti smruti  908 Mar 25 16:45 dss287.sum
-rwxrwxrwx 1 smruti smruti  867 Mar 25 16:45 dss288.sum
-rwxrwxrwx 1 smruti smruti 1064 Mar 25 16:47 dss350.sum

【问题讨论】:

  • 显示ls -l *.sum的输出
  • 当前目录中的每个文件都会给你这个错误吗?文件的权限是什么?
  • 所有文件都有读取权限,我以超级用户身份执行。 awk 只读取第一个文件,剩余的文件被错误跳过。
  • @Smruti:不要将输出放在 cmets 中。编辑您的问题并在此处提供。
  • 这是你的问题,cd。你cded 到另一个目录并且从未回到原始目录。处理后续文件。

标签: shell awk


【解决方案1】:

由于这条线,您遇到了这个问题:

cd ${scanresult}/${tempdir}

这会将您当前的工作目录更改为其他目录。之后,在第一个文件之后无法读取其余文件。目前还不清楚为什么要在循环内更改目录。

您可以使用此行返回原始路径:

cd -

但是,您在 awk 命令之后的大部分代码看起来可疑且多余。

【讨论】:

  • 非常感谢 .. 修复了它,它工作了 .. 再次感谢一吨... 是的.. 删除了大部分冗余代码...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 2011-12-09
  • 2011-09-23
相关资源
最近更新 更多