フォルダー内の1日あたりのファイル数を数える


11

フォルダ内のすべてのファイルの数を見つけることができますが、かなり大きな数になりました。

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

1日あたりのファイル数を調べる方法は?

したがって、結果は次のようになります。

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

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

そして、左側の数字は何ですか? 109294および109294
Sergiy Kolodyazhnyy

1
Sry、それは1日あたりのファイル数です。
タスマニスキ

回答:


21

これを行うには、のprintfアクションを使用しfindて変更時間のみを目的の形式で印刷し、andを使用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
注意:これらは、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、特に非常に膨大な数のファイルとわずかな異なる日のセットの場合、バージョンよりも高速に実行される可能性があります。1ステップで折りたたんでカウントすることにより、カウントする前に多数の重複をソートする必要がなくなります。
ピーターコーデス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.