한 줄만 포함된 파일을 삭제하시겠습니까? [복사]

한 줄만 포함된 파일을 삭제하시겠습니까? [복사]

csv폴더에 많은 수의 파일이 저장되어 있습니다. 한 줄이 포함된 파일 만 삭제하고 싶은데 csv어떻게 해야 하나요?

답변1

이름이 지정된 파일의 행 수를 MyFile.csv전달할 수 있습니다 wc -l <MyFile.csv. 이 숫자를 파일과 비교하고 다음을 1사용하여 파일을 삭제할 수 있습니다.

if [ "$( wc -l <MyFile.csv )" -eq 1 ]; then
    rm -i MyFile.csv
fi

이는 $(...)명령 대체이며 그 안에 있는 명령의 출력으로 대체됩니다. 이 -i옵션을 사용 rm하면 유틸리티에서 항목을 삭제하기 전에 확인을 요청하게 됩니다.

이를 현재 디렉터리의 모든 CSV 파일로 승격하려면 다음을 수행하세요.

for filename in ./*.csv; do
    if [ "$( wc -l <"$filename" )" -eq 1 ]; then
        rm -i "$filename"
    fi
done

현재 디렉터리나 하위 디렉터리의 모든 CSV 파일로 추가 승격하려면 다음을 수행하세요.

find . -type f -name '*.csv' -exec sh -c '
    for pathname do
        if [ "$( wc -l <"$pathname" )" -eq 1 ]; then
            rm -i "$pathname"
        fi
    done' {} +

특히 스크립트 파일 삭제를 테스트하려는 경우 데이터를 백업해야 합니다.

관련 정보