根据名称和扩展名类型比较和删除文件的脚本

根据名称和扩展名类型比较和删除文件的脚本

我的程序创建了两个同名但扩展名不同的文件(例如:20162012.dat 和 20162012.cnf)。有时程序无法创建 .dat 文件。因此另一个 .cnf 文件成为孤立文件。我正在寻找一个脚本来比较这个文件并删除不存在其伙伴 .dat 文件的孤立 .cnf 文件。

任何脚本和建议..请帮助。

我尝试了下面的一个,但出错了..可能是我遗漏了一些东西。请改正。

脚本:

for f in *.cnf
do
    [ -e "$f" ] || continue
    f="${f%%.cnf}"
    [ -e "$f".dat ] || rm -i -- "$f".cut
done

错误:

rm: cannot remove `20162010.cut': No such file or directory

注意:我将脚本和文件放在同一文件夹中进行比较和删除。

谢谢 !

答案1

做:

for f in *.cnf; do [[ -f ${f%.*}.dat ]] || echo "$f"; done

这是一次预演;替换echorm实际操作。

  • for f in *.cnf迭代.cnf文件

  • [[ -f ${f%.*}.dat ]]检查相关.dat文件是否存在

  • 如果不是 ( ||),则打印(或删除)该文件

相关内容