格雷普:找不到档案

时间:2014-07-31 06:05:50

标签: unix grep rm

在Unix环境中,我需要将报告写入x_out文件,并且在进程结束时,需要删除该文件。但是,它总是会引发以下错误。

grep: can't open /XYZ/123/Tmp/x_out

rm: /XYZ/123/Tmp/x_out non-existent

但是,我可以在相应的位置找到文件x_out。我也可以打开并查看内容。我发现有时文件名会随着一些'〜'而变化。喜欢附加到它的字符。有办法解决这个问题吗?

编辑:我没有任何'〜'附加到它。但是,我怀疑可能有一些像这样的不可读的聊天记录。

编辑:我在这里添加了实际错误

编辑:我使用的命令 grep" Report_values" $ {REPORTOUT} | cut -d" |" -f 6

rm $ {REPORTOUT}

2 个答案:

答案 0 :(得分:1)

嗯,我可以看到两个的可能性。毫无疑问会有更多,但我的头脑不是一个非常大的空间: - )

首先,尽管你的断言,文件并不存在

第二个是确实存在但你在错误的地方寻找它(例如,你已经改成了不同的目录)。

如果您放置类似于:

的行
( pwd ; cd ../.. ; pwd ; ls )

grep/rm之前的脚本中,它应该告诉您这两种可能性中的任何一种是否正确。

它将提供您当前的目录,您正在查找该文件的目录以及该目录中的文件。

答案 1 :(得分:1)

只检查文件名中是否有不可打印/图形字符...使用ls的-Q或-q标志来查看它...检查下面它的外观....

来自ls手册页的标志描述

   -q, --hide-control-chars
          print ? instead of non graphic characters

   --show-control-chars
          show non graphic characters as-is (default unless program is `ls' and output is a terminal)

   -Q, --quote-name
          enclose entry names in double quotes

   --quoting-style=WORD
          use quoting style WORD for entry names: literal, locale, shell, shell-always, c, escape

演示会议

$ ls
demo.txt       test.dat
$ ls -1
demo.txt
test.dat
$ cat demo.txt
cat: demo.txt: No such file or directory
$ rm demo.txt
rm: cannot remove `demo.txt': No such file or directory
$ ls -Q
"demo.txt     "  "test.dat"
$ ls -1Q
"demo.txt     "
"test.dat"
$ rm "demo.txt     "
$