删除一系列文本文件的最后 5 行的非常简单的脚本

use*_*170 3 linux script bash shell ubuntu

出于某种原因,此脚本为每个原件输出三个文件,而不是一个。

一定犯了一些小错误 - 我是新手!

如果有人能解释为什么会发生这种情况,我将非常感激。

脚本:-

for f in *.txt
do
   noOfRows=$(cat $f | wc -l)
   relevantRows=$(expr $noOfRows - 5)
   head -n $relevantRows $f | tee ${f%.txt}-Amended.txt
done
Run Code Online (Sandbox Code Playgroud)

ls 命令的结果:-

E12-5_F2_NEG-Amended-Amended-Amended.txt  E12-5_M3_POS-Amended-Amended-Amended.txt
E12-5_F2_NEG-Amended-Amended.txt          E12-5_M3_POS-Amended-Amended.txt
E12-5_F2_NEG-Amended.txt                  E12-5_M3_POS-Amended.txt
E12-5_F2_NEG.txt                          E12-5_M3_POS.txt
E12-5_F2_POS-Amended-Amended-Amended.txt  E12-5_M4_NEG-Amended-Amended-Amended.txt
E12-5_F2_POS-Amended-Amended.txt          E12-5_M4_NEG-Amended-Amended.txt
E12-5_F2_POS-Amended.txt                  E12-5_M4_NEG-Amended.txt
E12-5_F2_POS.txt                          E12-5_M4_NEG.txt
E12-5_F5_NEG-Amended-Amended-Amended.txt  E12-5_M4_POS-Amended-Amended-Amended.txt
E12-5_F5_NEG-Amended-Amended.txt          E12-5_M4_POS-Amended-Amended.txt
E12-5_F5_NEG-Amended.txt                  E12-5_M4_POS-Amended.txt
E12-5_F5_NEG.txt                          E12-5_M4_POS.txt
E12-5_F5_POS-Amended-Amended-Amended.txt  E12-5_M7_NEG-Amended-Amended-Amended.txt
E12-5_F5_POS-Amended-Amended.txt          E12-5_M7_NEG-Amended-Amended.txt
E12-5_F5_POS-Amended.txt                  E12-5_M7_NEG-Amended.txt
E12-5_F5_POS.txt                          E12-5_M7_NEG.txt
E12-5_M3_NEG-Amended-Amended-Amended.txt  E12-5_M7_POS-Amended-Amended-Amended.txt
E12-5_M3_NEG-Amended-Amended.txt          E12-5_M7_POS-Amended-Amended.txt
E12-5_M3_NEG-Amended.txt                  E12-5_M7_POS-Amended.txt
E12-5_M3_NEG.txt                          E12-5_M7_POS.txt
Run Code Online (Sandbox Code Playgroud)

非常感谢,亚当

Red*_*ick 5

这个脚本为每个原始文件输出三个文件......如果有人能解释为什么会发生这种情况,非常感谢。

由于E12-5_F2_NEG-Amended.txt.txt它结尾,下次运行脚本时,脚本会选取它。

三重结果表明您在调试脚本时运行了 3 次脚本。

如果脚本输出 to$f.new而不是 to ${f%.txt}-Amended.txt,你就不会有这个问题。

或者放在rm *Amended.txt程序的开头。如果您有大量文件和 a 目录,这在较旧的 Unix 变体上可能会很慢。

另一种选择是将文件输出到子目录中(例如"new/${f%.txt}.Amended.txt"