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' {} +
특히 스크립트 파일 삭제를 테스트하려는 경우 데이터를 백업해야 합니다.