Ruby 一次对目录中的文件进行计数
我正在使用macOSx,我想计算目录中的所有文件,然后打印按上次修改时间排序的结果。 像这样: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
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}”