Ruby 一次对目录中的文件进行计数

Ruby 一次对目录中的文件进行计数,ruby,linux,bash,Ruby,Linux,Bash,我正在使用macOSx,我想计算目录中的所有文件,然后打印按上次修改时间排序的结果。 像这样: 1241 2014-12-08 07:00:00 +0700 4123 2014-12-08 08:00:00 +0700 2241 2014-12-08 09:00:00 +0700 Dir[File.join(dir, '**', '*')].sort_by{ |f| File.mtime(f) } require 'fileutils' dir = '.' p Dir[File.join(d

我正在使用macOSx,我想计算目录中的所有文件,然后打印按上次修改时间排序的结果。 像这样:

1241 2014-12-08 07:00:00 +0700
4123 2014-12-08 08:00:00 +0700
2241 2014-12-08 09:00:00 +0700
Dir[File.join(dir, '**', '*')].sort_by{ |f| File.mtime(f) }
require 'fileutils'
dir = '.'
p Dir[File.join(dir, '**', '*')]
    .tap{|el| p el.length }
    .sort_by{ |f| File.mtime(f) }
等等。。 我尝试使用ruby,但我只能使用以下方法计算文件数:

dir = 'original'
puts Dir[File.join(dir, '**', '*')].count { |file| File.file?(file) }
或者将所有文件按时间排序,如下所示:

1241 2014-12-08 07:00:00 +0700
4123 2014-12-08 08:00:00 +0700
2241 2014-12-08 09:00:00 +0700
Dir[File.join(dir, '**', '*')].sort_by{ |f| File.mtime(f) }
require 'fileutils'
dir = '.'
p Dir[File.join(dir, '**', '*')]
    .tap{|el| p el.length }
    .sort_by{ |f| File.mtime(f) }

那我该怎么做呢?可能是bash脚本或ruby…

不确定我是否理解请求。您是否有子目录或需要对子目录中的所有文件进行排序?如果不是,我使用这个命令

ls -lctr
解释 如果需要清点文件,请使用以下方法:

find . -type f |wc -l
arr=[]
计数=0
Dir.glob(“/path/***”)。每个{文件}
如果文件.File?(文件)
计数+=1
arr 2241 2014-12-08 09:00:00+0700

这将不考虑子目录文件,尽管

如果我正确理解

Dir["Other/**"].sort_by{ |f| File.mtime(f) }.each do |item|
  if File.directory? item  
    print "#{Dir[File.join(item, '**', '*')].count} #{File.mtime(item)}\n"
  end
end
您可以使用计数文件,如下所示:

1241 2014-12-08 07:00:00 +0700
4123 2014-12-08 08:00:00 +0700
2241 2014-12-08 09:00:00 +0700
Dir[File.join(dir, '**', '*')].sort_by{ |f| File.mtime(f) }
require 'fileutils'
dir = '.'
p Dir[File.join(dir, '**', '*')]
    .tap{|el| p el.length }
    .sort_by{ |f| File.mtime(f) }

它打印文件的计数和排序数组。

下面是进入文件夹并从那里执行命令的bash脚本

#!/bin/bash
curdir=$(pwd)
for f in $curdir/<parent folder name>/*
  do
     [ -d $f ] && cd "$f" && echo Entering into $f && wc -l
  done;
!/bin/bash
curdir=$(pwd)
用$curdir表示f//*
做
[-d$f]&&cd“$f”&&echo进入$f&&wc-l
完成;
这是我的ruby代码:

require "Date"
dir = 'original'

for date in 1..7 do
  for hour in 0..23 do
    d = DateTime.new(2014, 1, 1, hour, 0, 0)
    d1 = DateTime.new(2014, 1, 1, hour+1, 0, 0)
    time = d.strftime("%H:%M")
    time1 = d1.strftime("%H:%M")

    puts ("Files on time 12/0#{date}/2014 #{time} (from #{time} -- #{time1}) :")
    puts Dir[File.join(dir, '**', '*')].count {|file|
      if ("12/0#{date}/2014 #{time}" < File.mtime(file).strftime('%m/%d/%Y %I:%M')) && (File.mtime(file).strftime('%m/%d/%Y %I:%M') < "12/0#{date}/2014 #{time1}")
        File.file?(file)
      end
    }
  end
  puts ("Files on time 12/0#{date}/2014 23:00 (from 23:00 -- 00:00 next day) :")
  puts Dir[File.join(dir, '**', '*')].count {|file|
    if ("12/0#{date}/2014 23:00" < File.mtime(file).strftime('%m/%d/%Y %I:%M')) && (File.mtime(file).strftime('%m/%d/%Y %I:%M') < "12/0#{date+1}/2014 #{time1}")
      File.file?(file)
    end
  }
end
需要“日期”
dir='原始'
对于1..7中的日期,请执行以下操作
在0..23小时内完成
d=日期时间。新(2014年,1,1,小时,0,0)
d1=日期时间。新(2014,1,1,小时+1,0,0)
时间=d.strftime(“%H:%M”)
time1=d1.strftime(“%H:%M”)
放置(“时间12/0#{date}/2014#{time}上的文件(从#{time}--#{time1}”))
放置目录[File.join(Dir,'**','*')].count{File|
如果(“12/0#{date}/2014#{time}”