내 프로그램은 이름은 같지만 확장자가 다른 두 개의 파일을 생성합니다(예: 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
관련 파일이 있는지 확인그렇지 않은 경우(
||
) 파일을 인쇄(또는 삭제)합니다.