다음 작업에 도움이 되는 쉘 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