Rexdf

The devil is in the Details.

Cygwin的日常妙用

| Comments

电脑的日常使用中总是会感觉一些需求不能满足,比如希望批量重命名1000多个分布在不同文件夹的图片,希望在十多个文件夹中的txt文件中找一个含有某一字符串的文件等。

对于这种需求,在Windows上面是开发出了若干的辅助Explorer的,这在喜欢玩小众软件的人中间应该非常流行。比如非常多的一些人都会使用Total Command。但是我一直都是拒绝使用这种软件的。理由有二:其一,学习成本非常高,而且具有较强的排他性,之后看很多其他软件都会带上有色眼镜,重要的是破坏原生Windows的体验;其二,这种基本需求的东西,居然不开源。

我主要的Windows使用习惯是物理机上面基本上不会运行任何有保证的基础软件之外的程序,而且基本上两个月左右必定格盘重做一次系统。另外按照我自己的使用情况来看,大部分需求,Explorer.exe和管理员cmd.exe,都是可以完成需求的。按照我的认为,如果一个日常的文件管理需要写成bat来运行,那么问题就复杂化了,最好的是鼠标点几下或者敲一个一两行的cmd命令就解决。

然而因为我也学习了一段时间的Bash shell,一些基本的文件名查找find和文件内容查找grep,以及强大流编辑器sed和awk,很多问题解决起来也是随手两条命令的事。

在熟悉find和grep之后,基本上就会感觉批处理显得非常无能。但是要注意的它是自带的,而且是标配,也就是说是首选项,如果它也能简单解决自然就不用Bash命令了。

cygwin的bin目录下面很多命令是.exe格式的,另外一些则是不带后缀的shell。对于exe格式的大部分在cmd下面也是可以正常工作的,比如rm,ls,find,grep等,当然最好的工作环境还是在mintty里面。

比如我今天想找我的一个RSA公钥的私钥,然后随手在mintty里面敲了如下一句。

命令MyBlog
cd "d:\passwd\sec"
find . -type f -name "*.pub" | xargs grep "iEsSR"

非常快捷的就递归了目录下面的所有pub后缀的文件,然后按内容查找字符。这是非常快捷的。如果批处理则findstr /s iEsSR *.*也可以达到递归查找的目的,只是不能限制为pub后缀了。

本文还待完善整理。

Comments