Linux 서버에서 줄이 두 개 이상인 파일을 삭제하는 방법은 무엇입니까? [폐쇄]

Linux 서버에서 줄이 두 개 이상인 파일을 삭제하는 방법은 무엇입니까? [폐쇄]

특정 디렉터리에 전체 경로가 포함된 많은 파일 목록이 있습니다. 이 디렉토리에서 파일에 1줄(2줄 이상)이 넘는 파일을 삭제하려고 합니다.

어떻게 하나요?

답변1

이것을 사용할 수 있습니다. 실행하기 전에 먼저 echo대신 사용해 보세요 rm.

for i in dir/*; do
  lines=$(wc -l "$i")
  if test $lines -gt 1; then
    rm "$i"
  fi
done

답변2

이 시도,

find . -type f -maxdepth 1 -exec bash -c '[[ $(wc -l < "$1") -gt 1 ]] && rm "$1"' _ '{}' \;
  • . -type f -maxdepth 1현재 디렉터리에서 파일 찾기
  • $(wc -l < "$1") -gt 1행 수가 1보다 큰지 확인
  • rm "$1"' _ '현재 디렉터리의 파일만 삭제합니다.

답변3

해결책 awk:

wc -l /path/to/dir/* | head -n -1` | awk '$1>1 {print $2}' | xargs rm

노트:

  • 이 간단한 버전은 특수 문자를 지원하지 않습니다.
  • 중요한 것은 wc -l줄 수가 아니라 개행 문자의 발생 횟수라는 점을 기억하십시오. 따라서 두 줄이 있는 파일(두 번째 줄에는 LF가 없음)은 "1" 줄이 있는 것으로 보고됩니다.

관련 정보