私のプログラムは、同じ名前の拡張子を持つ2つのファイルを生成します(例: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
関連ファイルがあるか確認それ以外の場合(
||
)ファイルを印刷(または削除)します。