디렉토리의 마지막 4개 파일의 크기가 서로 같으면 종료하고 그렇지 않으면 계속 [닫기]

디렉토리의 마지막 4개 파일의 크기가 서로 같으면 종료하고 그렇지 않으면 계속 [닫기]

다음 작업에 도움이 되는 쉘 bash 스크립트를 알려주십시오.

마지막으로 추가된 디렉터리의 4개 파일의 크기가 동일하면 종료하고, 그렇지 않으면 계속합니다.

예:

ls -l $dir_path | awk '{print $5}' | tail -4

인쇄된 4개의 값이 서로 동일하면 종료하고, 그렇지 않으면 계속합니다.

답변1

zsh -c 'zmodload zsh/stat
  [[ $(zstat -N +size -- *(.om[1,4])) =~ $'\''(.*)\n\\1\n\\1\n\\1'\'' ]]' && exit

현재 디렉토리에서 숨겨지지 않은 최신 일반 파일 4개가 동일한 크기인 경우 종료됩니다.

GNU 시스템에서는 다음을 수행할 수도 있습니다.

find . -maxdepth 1 ! -name '.*' -type f -printf '%T@ %s\n' |
  sort -rn |
  awk 'NR == 1 {v = $0}; v != $0 {exit}; NR == 4 {exit 1}' || exit

POSIX적으로:

ls -tnq -- "$dir_path" |
  awk '!/^-/ {next}
       n++ == 0 {v = $5}
       v != $5 {exit}
       n == 4 {exit 1}' || exit

자신의 접근 방식과 같이 최신 4개(알파벳순 목록) 대신 마지막 4개(일반 파일, 심볼릭 링크 또는 소켓 등)를 출력하려면 다음을 ls수행할 수 있습니다(여전히 POSIXly).

ls -rnq -- "$dir_path" |
  awk 'NR == 1 {next}
       NR == 2 {v = $5}
       v != $5 {exit}
       NR > 4 {exit 1}' || exit

답변2

ls -c정렬하는 데 사용됨시간, uniq동일한지 확인하세요.

ls -crntq | tail -4 | awk '{print $5}' | uniq -c | grep -q "^\s*4\s" && exit

관련 정보