Linux 为什么sed会留下很多文件?
我注意到我的目录中有很多文件,叫做“sedAbCdEf”之类的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
- 为什么要创建这些文件
- 在脚本运行后,它们是否有任何价值
- 我是否可以将这些文件发送到其他位置,例如
/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");