명령에 대한 도움을 찾고 있습니다. 큰 파일 디렉토리가 있습니다. 내가 하고 싶은 것은 이것들을 더 잘 분류하는 것이다.
예를 들어, 고유한 연도가 있는 파일과 디렉터리의 수를 확인하고 싶습니다. 따라서 출력에는 연도 범위가 표시될 것입니다.
ls -l
나는 목록을 통해 추가하려고 노력했지만 grep
그것은 ls -l | grep -c
나에게 매력적인 독특한 날짜입니다.
누구든지 도와줄 수 있나요?
답변1
다음을 사용해 보세요:
ls -l --time-style=long-iso | grep -c ' 2017-'
2017을 원하는 4자리 연도로 바꾸세요. 이 --time-style
옵션을 사용하면 ls가 인쇄됩니다.ISO 8601기본값인 짧고 모호한 사람이 읽을 수 있는 콘텐츠 대신 타임스탬프를 사용합니다. grep에 전달된 표현식은 타임스탬프로 시작하는 연도와 일치하며 해당 연도에 수정된 파일의 행만 추출해야 합니다(4자리 숫자로 시작하고 대시가 뒤에 오는 파일 이름이 없는 경우).
이것은 GNU 구현에서만 작동할 수 있다는 점에 유의하십시오 ls
(비지박스, FreeBSD, NetBSD 또는 MINIX 구현에서는 작동하지 않는다는 것을 알고 있으며 Solaris 구현에서는 작동하지 않는다고 확신합니다).
의견에서 요청한 대로 다음(길고 복잡한) 명령을 사용하여 표시된 개별 연도의 수량을 얻을 수 있습니다.
ls -l --time-style=long-iso | tail +2 | sed -n 's/ */ /gp' - | cut -d ' ' -f 6 | cut -d '-' -f 1 | sort -u | wc -l
tail 명령은 합계(쓸모 없음)를 표시하는 첫 번째 줄을 제거합니다. sed 명령은 연속된 공백을 단일 공백으로 축소합니다. 첫 번째 cut 명령은 연-월-일 필드를 추출하고, 두 번째 명령은 연도만 추출한 다음, sort 명령은 이를 각 연도의 한 인스턴스로 줄이고, wc 명령은 최종적으로 숫자를 출력합니다.