매일 폴더에있는 파일 수 계산


11

폴더에있는 모든 파일을 찾을 수는 있지만 꽤 많습니다.

find . -type f | wc -l      #find number of files in DIR
ls -lrt                     #list all files order by date  

하루에 파일 수를 찾는 방법은 무엇입니까?

따라서 결과는 다음과 같아야합니다.

# left number is number of files and right is one day.

109294 2016-06-27
101555 2016-06-26
88123  2016-06-25 
... etc. 

왼쪽의 숫자는 무엇입니까? 109294109294
세르지 Kolodyazhnyy

1
Sry, 하루에 파일 수입니다.
tasmaniski

답변:


21

이는 사용 할 수 printf의 조치를 find만 원하는 형식의 수정 시간을 인쇄 한 다음 사용 sortuniq:

find . -type f -printf '%TY-%Tm-%Td\n' | sort | uniq -c
  • -printf '%TY-%Tm-%Td\n'파일의 수정 시간을 예를 들어 2015-05-23형식으로 인쇄 합니다

  • sort출력을 정렬하고 uniq -c날짜별로 카운트를 수행합니다.

예:

~/foobar% find . -type f -printf '%TY-%Tm-%Td\n' | sort | uniq -c
      3 2004-06-29
      1 2004-08-23
      1 2004-09-15
      1 2004-09-18
      1 2005-07-24
      1 2006-02-05
      2 2008-06-25
      3 2008-12-31
      1 2009-03-13
      1 2009-04-30
      1 2010-04-04
      2 2010-09-01
      8 2011-07-13
     15 2011-08-27
      3 2011-11-03
      3 2014-10-08

2
NB :이 gnuplot를 사용하여 그래픽으로 볼 수 있습니다find . -type f -printf '%TY-%Tm-%Td\n' 2</dev/null | sort | uniq -c | tail -n +2 | gnuplot -p -e "set xdata time; set timefmt \"%Y-%m-%d\";set xtics rotate; plot '-' using 2:1 with impulses"
user1717828

재미있는 방법이지만 작동하지 않습니다. 그래픽이 있지만 데이터가 없습니다 ...
tasmaniski

4

여기에 find+ 가있는 해결책이 있습니다.awk

find . -maxdepth 1 -type f -printf '%TY-%Tm-%Td\n' | awk '{array[$0]+=1}END{ for(val in array) print val" "array[val]   }'

기본적으로 모든 정규 파일을 찾아서 %T형식에 지정된대로 수정 시간을 인쇄 한 다음 awk인계 받아 연관 배열을 사용하여 각 행을 계산합니다. END{}문에서 사용 된 for루프 (+ 일 수있는) 연결된 어레이의 모든 요소를 통과하고, + 키를 배열하는 열쇠 내용을 출력한다.

sort특히 sort -k 1열 1 (날짜)을 기준으로 출력을 구성하는 데 사용할 수 있지만 선택 사항입니다. 또한 현재 폴더에서만-maxdepth 1 파일을 확인 합니다 . 하위 디렉토리에서도 파일을 찾으려면 -maxdepth 1부분을 제거하십시오 .

샘플 출력

$ find . -maxdepth 1 -type f -printf '%TY-%Tm-%Td\n' | awk '{array[$0]+=1}END{ for(val in array) print val" "array[val]   }'

2015-09-29 1
2016-04-06 2
2016-04-07 10
2016-04-08 2
2015-11-05 2
2016-04-22 2
2016-04-23 6
2016-04-24 1
2015-11-21 2
2015-11-22 2

이 기능은 |sort | uniq -c특히 파일 수가 많고 요일이 다른 작은 버전 에서 버전 보다 빠르게 실행될 수 있습니다 . 한 단계에서 카운트로 축소하면 카운트하기 전에 많은 수의 중복을 정렬하지 않아도됩니다.
Peter Cordes 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.