我的程序创建了两个同名但扩展名不同的文件(例如: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
这是一次预演;替换echo
为rm
实际操作。
for f in *.cnf
迭代.cnf
文件[[ -f ${f%.*}.dat ]]
检查相关.dat
文件是否存在如果不是 (
||
),则打印(或删除)该文件