일주일에 얼마나 많은 파일이 생성되었는지 확인하는 방법은 무엇입니까? 상황: 시스템이 정상적으로 실행 중인 경우 시스템은 매주 4개의 파일을 생성합니다. 예를 들어:
A_08-07-2015.csv
B_08-07-2015.csv
C_08-07-2015.csv
D_08-07-2015.csv
A_01-07-2015.csv
B_01-07-2015.csv
C_01-07-2015.csv
D_01-07-2015.csv
A_24-06-2015.csv
B_24-06-2015.csv
C_24-06-2015.csv
D_24-06-2015.csv
⋮
이제 시스템이 정상적으로 실행되는지 확인하기 위해 시스템이 매주 이 4개의 파일을 생성하는지 확인하는 쉘 스크립트를 작성하고 싶습니다. 그런데 어떻게 쓰는지 모르겠네요...
답변1
$ ls
A_01-07-2015.csv B_01-07-2015.csv C_01-07-2015.csv D_01-07-2015.csv
A_08-07-2015.csv B_08-07-2015.csv C_08-07-2015.csv D_08-07-2015.csv
A_24-06-2015.csv B_24-06-2015.csv C_24-06-2015.csv D_24-06-2015.csv
$ ls | awk -F'[^0-9]' '{ print $5$4$3 }' | sort | uniq -c
4 20150624
4 20150701
4 20150708
$ rm B_08-07-2015.csv
$ ls | awk -F'[^0-9]' '{ print $5$4$3 }' | sort | uniq -c
4 20150624
4 20150701
3 20150708
이렇게 하면 4개의 파일이 없는 날짜를 쉽게 찾을 수 있습니다.
첫 번째 댓글에 대한 답변:
$ touch {A,B_B,banana,popaye}_{01-07,08-07,24-06}-2015.lol.csv
$ ls
A_01-07-2015.lol.csv banana_01-07-2015.lol.csv B_B_01-07-2015.lol.csv popaye_01-07-2015.lol.csv
A_08-07-2015.lol.csv banana_08-07-2015.lol.csv B_B_08-07-2015.lol.csv popaye_08-07-2015.lol.csv
A_24-06-2015.lol.csv banana_24-06-2015.lol.csv B_B_24-06-2015.lol.csv popaye_24-06-2015.lol.csv
$ ls | awk -F'[^0-9]+' '{ print $4$3$2 }' | sort | uniq -c
4 20150624
4 20150701
4 20150708
$ rm B_B_08-07-2015.lol.csv
$ ls | awk -F'[^0-9]+' '{ print $4$3$2 }' | sort | uniq -c
4 20150624
4 20150701
3 20150708
이 버전은 숫자가 아닌 모든 문자열을 필드 구분 기호로 허용하므로 날짜 앞의 접두사에도 숫자가 포함되어 있으면 실패합니다.
답변2
Unix/Linux 파일 시스템에서 파일 속성에는 일반적으로 생성 시간 필드가 포함되지 않습니다(예: VFAT 및 NTFS에 있음).
따라서 파일 이름의 날짜 패턴에 의존할 수 없다면 이전 파일 이름 목록을 유지하고 지난 주의 목록을 이번 주 목록과 비교해야 합니다.
두 방법 모두 지난 주에 존재했던 파일이 중간에 삭제되고 다시 생성되었음을 보장하지 않습니다. 상황을 더 이상 제한하지 않으면 어떤 파일이 생성되었는지 확인할 수 없습니다.