Linux 为什么sed会留下很多文件?

Linux 为什么sed会留下很多文件?,linux,sed,Linux,Sed,我注意到我的目录中有很多文件,叫做“sedAbCdEf”之类的 为什么要创建这些文件 在脚本运行后,它们是否有任何价值 我是否可以将这些文件发送到其他位置,例如/tmp/ 更新: 我检查了脚本,直到找到一个生成文件的脚本。以下是一些示例代码: #!/bin/bash a=1 b=`wc -l < ./file1.txt` while [ $a -le $b ]; do for i in `sed -n "$a"p ./file1.txt`; do for j i

我注意到我的目录中有很多文件,叫做“sedAbCdEf”之类的

  • 为什么要创建这些文件
  • 在脚本运行后,它们是否有任何价值
  • 我是否可以将这些文件发送到其他位置,例如
    /tmp/
更新:

我检查了脚本,直到找到一个生成文件的脚本。以下是一些示例代码:

#!/bin/bash
a=1
b=`wc -l < ./file1.txt`
while [ $a -le $b ]; do
    for i in `sed -n "$a"p ./file1.txt`; do
        for j in `sed -n "$a"p ./file2.txt`; do
            sed -i "s/$i/\nZZ$jZZ\n/g" ./file3.txt
            c=`grep -c $j file3.txt`
            if [ "$c" -ge 1 ]
            then
                echo $j >> file4.txt
                echo "Replaced "$i" with "$j" "$c" times ("$a"/"$b")."
            fi
                echo $i" not found ("$a"/"$b")."
            a=`expr $a + 1`
        done
    done
done
#/bin/bash
a=1
b=`wc-l<./file1.txt`
而[$a-le$b];做
对于“sed-n”$a“p./file1.txt”中的i;做
对于“sed-n”$a“p./file2.txt”中的j;做
sed-i“s/$i/\nZZ$jZZ\n/g”。/file3.txt
c=`grep-c$j file3.txt`
如果[“$c”-通用电气1]
然后
echo$j>>file4.txt
echo“将“$i”替换为“$j”“c”次($a”/“$b”)。”
fi
未找到回显$i“($a”/“$b”)。”
a=`expr$a+1`
完成
完成
完成

这可能是因为您使用了太多sed操作,并且在循环模式中,sed可能正在生成未正确删除的tmp文件


看看这篇文章,sed之前有这样一个问题需要报告。更好的方法是创建一个删除文件的脚本,或者创建一个删除所有文件的函数,删除名称以sed开头的所有文件(^sed*),类似的东西。

如果使用
-i
选项(这意味着在原地进行更改)
sed
写入临时文件,然后将其重命名为您的文件。因此,如果操作中止,文件将保持不变

您可以查看哪些文件已打开,并使用
strace
重命名:

$ strace -e open,rename sed -i 's/a/b/g' somefile
注意:
somefile
以只读方式打开

似乎没有办法覆盖备份目录。GNU sed始终写入文件目录(±符号链接)。发件人:

前缀
sed
为硬编码:

output_file.fp = ck_mkstemp (&input->out_file_name, tmpdir, "sed");
  • 为什么要创建这些文件
sed-i“s/$i/\nZZ$jZZ\n/g./file3.txt

-i
选项使
sed
将标准输出存储到临时文件中。
完成
sed
后,它将重命名此临时文件以替换原始的
file3.txt

如果运行
sed
时出现问题,这些
sedAbCdE
temp文件将留在那里

  • 在脚本运行后,它们是否有任何价值
你的旧文件没有动过。通常不会

  • 我是否可以将这些文件发送到其他位置,例如/tmp/
是的,你可以看到上面


编辑:请参阅以进一步阅读。

为什么您认为它与sed有关?当然,除了文件名之外,我想它可能是由其他东西造成的,但是,我在运行BASH脚本后发现它们,BASH脚本包含
sed
。所有文件名都以“sed”开头,后跟一些随机字母。你能发布bash脚本吗?我正在寻找一个部件,上面写着
blabla>sedAbCdEf
?@NiklasB.:
sed-I
创建文件,据我所知,它说不可能将这些文件发送给其他人location@J.F.Sebastian我想村里的意思是在所有的脚本都停止运行之后,可以确认操作吗?临时文件必须与最终要重命名的文件在同一目录中创建,否则无法确定重命名是否有效<但是,如果不使用临时文件替换旧文件,则code>sed应该删除临时文件。
output_file.fp = ck_mkstemp (&input->out_file_name, tmpdir, "sed");