我目前正在运行一个名为(log2csv)的Bash脚本,该脚本针对指定的.log文件运行。坐在所需的目录中,我可以输入终端:
log2csv Red1_1.log
这将创建Red1_1.csv
这是我目前的bash脚本:
#!/bin/bash
for path
do
base=$(basename "$path")
noext="${base/.log}"
/Users/joshuacarter/bin/read_scalepack.pl "$path" > "${noext}.csv"
done
此脚本实际上是在指定日志上运行perl脚本,并将结果放在CSV输出中。
我也可以在终端中运行:
log2csv *.log
这将针对当前目录中的所有.log文件运行脚本,并为每个文件创建.csv文件。
我希望脚本执行的操作只能在没有为其创建.csv文件的.log文件上运行。在做了一些研究后,我想我可以使用inotifywait来实现这一点,但我不确定如何在我的脚本中使这个工作?我也读过,如果你覆盖一个文件,这可能是一个问题。任何帮助或想法将非常感谢!
答案 0 :(得分:3)
我希望脚本执行的操作只能在没有为其创建.csv文件的.log文件上运行。
只需跳过那些已存在相应.csv文件的.log文件:
for path
do
base=$(basename "$path")
noext="${base/.log}"
[ -e "${noext}.csv" ] && continue # <---------------
/Users/joshuacarter/bin/read_scalepack.pl "$path" > "${noext}.csv"
done