README.md in mfd-0.1.0 vs README.md in mfd-0.2.0
- old
+ new
@@ -1,30 +1,133 @@
# Mfd
-Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/mfd`. To experiment with that code, run `bin/console` for an interactive prompt.
+mdfind4 - a better mdfind built upon mdfind3
-TODO: Delete this and the text above, and describe your gem
+Spotlight 是 OS X 上非常好用的一个桌面搜索工具,mdfind 是Spotlight 的 CLI frontend,
+虽然 mdfind 的功能足够强大,但是界面非常不友好,例如,要搜索电脑中2013年的文件大小大于 1MB
+的jpg图像文件,需要一个非常复杂的命令。mdfind4 对mdfind进行封装,提供比较易用的界面
## Installation
-Add this line to your application's Gemfile:
+Install it yourself as:
-```ruby
-gem 'mfd'
+ $ gem install mfd
+
+Or:
+
+ $ sudo gem install mfd
+
+## Usage
+
```
+usage: mfd [options] [search dir]
-And then execute:
+ 通过指定若干选项来搜索文件系统中被 Spotlight 索引的文件,每个选项之间是逻辑与的关系. 默认将
+ 搜索文件系统中所有的被索引文件,可以通过最后一个参数来约束其只在某个目录中进行搜索.
- $ bundle
+ % mdfind4 --content-type com.omnigroup.omnigraffle.graffle --from 2011/11/1 -t '2013-01-01 14:30:24'
+ % mdfind4 --query '关键字' --content-type 'com.adobe.pdf'
+ % mdfind4 -e mp3 -b10M
-Or install it yourself as:
+options:
- $ gem install mfd
+ 以下选项均支持以一个 "@" 符号开头, 后跟一个文件名,表示此选项的值将从给定的文件中提取:
-## Usage
+ • -f, --from
+ • -t, --to
+ • -F, --from-create
+ • -T, --to-create
+ • -c, --content-type
+ • -k, --kind
+ • -b, --biggerthan
+ • -s, --smallerthan
+
+
-TODO: Write usage instructions here
+ -f, --from from e.g. --from 2010/1/1
+ 搜索"文件最后修改时间"等于或晚于指定时间的文件,时间格式为"YYYY-mm-dd HH:MM:SS"
+ 其中可以使用任意非数字字符作为分隔符,也可以只指定日期部分。
+ 另外, -f 选项还支持指定一个数字后跟一个字母的形式来指定时间,
+ 支持的字符包括: S, M, H, d, m, Y,分别表示: 秒, 分, 时,
+ 天, 月, 年, 其中一个月等于 30 天, 一年等于 365 天.
+ 例如, 搜索最近 10 天的文件: -f 10d
+ -t, --to to 搜索"文件最后修改时间"等于或早于指定时间的文件, 格式同"-f"选项
+
+ -F, --from-create from 搜索"文件创建时间"等于或晚于指定时间的文件, 格式同"-f"选项
+
+ -T, --to-create to 搜索"文件创建时间"等于或早于指定时间的文件, 格式同"-f"选项
+
+ -q, --query query e.g. --query "关键字"
+
+ -c, --content-type contenttype e.g. --contenttype com.omnigroup.omnigraffle.graffle
+ 搜索 "kMDItemContentType" 属性等于指定值的文件,可以不
+ 指定完整的 Content Type,例如 Ruby 脚本的 Content Type
+ 为 "public.ruby-script",但是可以使用下面的命令所有所有
+ Ruby 脚本文件:mdfind4 -c ruby
+
+ -e, --type file-ext-name .e.g -e 'mp3'
+ ContentType 字符串不便记忆,为了方便使用,本程序将常用的
+ 文件类型的后缀名和 kMDItemKind 字符串建立关联,可以使用本选项
+ 来指定要搜索的文件的后缀名, 可以使用"-l"选项查看所有支持的后
+ 缀名以及关联
+
+ -l, --list-types kMDItemKind 字符串不便记忆,为了方便使用,本程序将常用的
+ 文件类型的后缀名和 kMDItemKind 字符串建立关联,使用本选项
+ 看所有支持的后缀名以及关联
+
+ -k, --kind kind e.g. --kind "HTML Document"
+ "-k"选项是另外一个用来指定文件类型的选项,它使用
+ "kMDItemKind"属性来搜索文件. 例如, 搜索邮件: "-k 邮件信息"
+ 搜索 Safari 历史记录: "-k 'Safari 历史记录项目'"
+
+ -b, --bigger-than size e.g. --bigger-than 100000
+ 搜索文件大小大于或等于给定值的文件,可以使用 t, g, m, k 等单位,
+ 例如, 搜索大于或等于 1MB 字节的文件:"-b 1m"
+
+ -s, --smaller-than size e.g. --smaller-than 100000
+ 搜索文件大小小于或等于给定值的文件,可以使用 t, g, m, k 等单位,
+ 例如, 搜索小于或等于 1GB 字节的文件:"-b 1G"
+
+ --prop-eq arg_value
+ e.g. --prop-eq FSSize@diary.txt
+ 不同类型的文件各自都有多种多样的属性,本程序支持的属性比较有限, 若需要
+ 按照其他属性比较,则使用本选项以及下面三个以 "--prop"
+ 打头的选项。可以通过 OS X 自带的 "mdls" 命令来查看文件的各种属性,
+ 属性名称一般以 "kMDItem" 打头,使用这四个选项时可以只指定 "kMDItem"
+ 后面的部分, 本选项的值的格式为 "property@filename", 例如,
+ 搜索文件大小等于 a.txt 的所有文件:--prop-eq FSSize@./a.txt
+
+ --prop-ne arg_value
+ e.g. --prop-ne FSSize@diary.txt
+
+ --prop-le arg_value
+ e.g. --prop-le FSSize@diary.txt
+
+ --prop-ge arg_value
+ e.g. --prop-ge FSSize@diary.txt
+
+ -d, --downloadfrom url 搜索从URL下载的文件
+ -n, --name name 按文件名称搜索, 自动支持模糊匹配, 无需指定通配符
+ -0, --null Prints an ASCII NUL character after each result path.
+ This is useful when used in conjunction with
+ xargs -0.
+ --live
+ Causes the mdfind command to provide live-updates to the
+ number of files matching the query. When an
+ update causes the query results to change the
+ number of matches is updated. The find can
+ be cancelled by typing ctrl-C.
+
+ --count
+ Causes the mdfind command to output the total number of
+ matches, instead of the path to the matching
+ items.
+
+ --debug
+ mdfind4 通过调用 OS X 系统自带的 mdfind 命令来完成文件搜索,指定
+
+```
## Development
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).