使用ls筛选某一天的文件

ls命令,即便是对于程序开发人员,也可以说是使用频率最高的一个命令了。但是,在很多人的印象中,ls命令仅仅是用来查看目录与文件的命令而已。如果要说筛选文件,你的第一反应可能是:find命令。但也许,它并不能满足你的需求。
先来说说,启发我使用ls命令筛选文件的应用场景吧:

[afe:/home/afe/corpftp/NJ000066/bkzipfile]>ls|wc -l
4768
[afe:/home/afe/corpftp/NJ000066/bkzipfile]>l|head -9
总用量 3985504
-rw-r----- 1 afe    afe      174984 6月   1 2016 CXQQP100H1013601020010000A8YHYH00023420160506000002.zip
-rw-r----- 1 afe    afe      178451 6月   1 2016 CXQQP100H1013601020010000A8YHYH00023420160506000003.zip
-rw-r----- 1 afe    afe      186625 6月   1 2016 CXQQP100H1013601020010000A8YHYH00023420160507000001.zip
-rw-r----- 1 afe    afe      175124 6月   1 2016 CXQQP100H1013601020010000A8YHYH00023420160509000001.zip
-rw-r----- 1 afe    afe      181216 6月   1 2016 CXQQP100H1013601020010000A8YHYH00023420160509000002.zip
-rw-r----- 1 afe    afe      175539 6月   1 2016 CXQQP100H1013601020010000A8YHYH00023420160509000003.zip
-rw-r----- 1 afe    afe      182295 6月   1 2016 CXQQP100H1013601020010000A8YHYH00023420160510000002.zip
-rw-r----- 1 afe    afe      197808 6月   1 2016 CXQQP100H1013601020010000A8YHYH00023420160510000003.zip

在上面的例子中,目录中共计有4768个文件,每天的文件个数是不确定的,可能是几个、几十个或者上百个。刚好,你需要确定某一天的文件个数呢?你会怎么办呢?

使用find命令是满足需求的,因为find命令的时间筛选都是基于范围的,你只能用它查找以当前时间为起点,若干个小时之内(之外),或者若干天之内(之外)的文件。而需要精确查找某一天的文件,它是无法达到要求的。

[afe:/home/afe/corpftp/NJ000066/bkzipfile]>find . -type f -mtime -2 -exec ls -lt {} \;
# 不难发现,基于find命令的输出,无法精确筛选某一天的文件
-rw-r--r-- 1 afeftp afeftp 580066 5月   2 08:34 ./KZQQP100H1013601020010000A8YHYH00023420170502000007.zip?
-rw-r--r-- 1 afeftp afeftp 710885 5月   2 08:24 ./KZQQP100H1013601020010000A8YHYH00023420170502000008.zip?
-rw-r--r-- 1 afeftp afeftp 182472 4月  30 11:04 ./CXQQP100H1013601020010000A8YHYH00023420170430000002.zip?
-rw-r--r-- 1 afeftp afeftp 1738260 5月   2 08:34 ./KZQQP100H1013601020010000A8YHYH00023420170502000009.zip?
-rw-r--r-- 1 afeftp afeftp 343480 5月   2 08:24 ./KZQQP100H1013601020010000A8YHYH00023420170427000045.zip?
-rw-r--r-- 1 afeftp afeftp 222953 5月   2 09:14 ./CXQQP100H1013601020010000A8YHYH00023420170502000026.zip?
-rw-r--r-- 1 afeftp afeftp 180948 5月   2 08:04 ./CXQQP100H1013601020010000A8YHYH00023420170502000002.zip?

也许我们可以结合ls、stat、awk、grep命令,就像下面这样:

[afe:/home/afe/corpftp/NJ000066/bkzipfile]>ls|xargs stat |grep Modify|awk '{print $2}'|grep 2017-05-01|wc -l
4# 下面是截取ls -lt的部分输出,便于对比上述命令统计结果是否与实际相符
-rw-r--r-- 1 afeftp afeftp   345321 4月  30 20:54 KZQQP100H1013601020010000A8YHYH00023420170430000004.zip?
-rw-r--r-- 1 afeftp afeftp   177206 5月   1 09:04 CXQQP100H1013601020010000A8YHYH00023420170501000001.zip?
-rw-r--r-- 1 afeftp afeftp   195418 5月   1 14:04 CXQQP100H1013601020010000A8YHYH00023420170501000002.zip?
-rw-r--r-- 1 afeftp afeftp   179600 5月   1 17:04 CXQQP100H1013601020010000A8YHYH00023420170501000005.zip?
-rw-r--r-- 1 afeftp afeftp   175210 5月   1 18:04 CXQQP100H1013601020010000A8YHYH00023420170501000006.zip?
-rw-r--r-- 1 afeftp afeftp   178690 5月   2 07:04 CXQQP100H1013601020010000A8YHYH00023420170502000001.zip?

对比上面的输出,应该说组合命令达到了我们的预期要求。但是,有没更简单的方法呢?答案就是:ls -lt –time-style=long-iso,输出如下:

[afe:/home/afe/corpftp/NJ000066/bkzipfile]>ls -l --time-style=long-iso
# 以下是部分输出
-rw-r--r-- 1 afeftp afeftp  1041525 2017-04-29 13:00 KZQQP100H1013601020010000A8YHYH00023420170428000125.zip?
-rw-r--r-- 1 afeftp afeftp   347335 2017-04-29 13:00 KZQQP100H1013601020010000A8YHYH00023420170428000135.zip?
-rw-r--r-- 1 afeftp afeftp   345547 2017-04-30 20:54 KZQQP100H1013601020010000A8YHYH00023420170430000003.zip?
-rw-r--r-- 1 afeftp afeftp   345321 2017-04-30 20:54 KZQQP100H1013601020010000A8YHYH00023420170430000004.zip?
-rw-r--r-- 1 afeftp afeftp  1158377 2017-05-02 08:34 KZQQP100H1013601020010000A8YHYH00023420170502000003.zip?
-rw-r--r-- 1 afeftp afeftp  1544723 2017-05-02 08:14 KZQQP100H1013601020010000A8YHYH00023420170502000004.zip?

不难得出,更简单的搜索命令:

[afe:/home/afe/corpftp/NJ000066/bkzipfile]>ls -l --time-style=long-iso|grep 2017-05-01|wc -l
4

ok,输出一致,目标达成。

使用ls筛选某一天的文件相关推荐

  1. 利用 ls -l 命令可以看到某个文件或目录的权限

    利用 ls -l 命令可以看到某个文件或目录的权限, 它以显示数据的第一个字段为 准.第一个字段由 10 个字符组成,如下: [root@node1 ~]# ls -l monitor_log.sh ...

  2. 使用Python批量筛选上千个Excel文件中的某一行数据并另存为新Excel文件(下篇)

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 野火烧不尽,春风吹又生. 大家好, ...

  3. java实现筛选_java实现简单的文件筛选

    package filenameFilter; import java.io.File; /* * 实现功能: * 获取指定路径下的指定格式的文件; * */ public class Test { ...

  4. mysql 列目录_Linux ls命令:查看目录下文件

    通过学习 cd 和 pwd 命令,相信读者已经能够在庞大的 Linux 文件系统中,随心所欲地游荡并确定自己所在的位置了.本节继续来学习,如何知道某目录中存放了哪些文件或子目录. ls 命令,list ...

  5. linux ls 命令排序,如何在Linux中使用ls命令按大小对所有文件进行排序

    ls命令是列出目录内容的最流行且非常有用的命令. 在本文中,我们将解释如何使用ls sort选项按大小列出目录内容. 1)按大小列出目录中的文件(排序) 要列出具有大小排序的特定目录的内容,我们将使用 ...

  6. Linux ls命令:查看目录下文件

    ♥️♥️♥️♥️♥️♥️通过学习 cd 和 pwd 命令,相信读者已经能够在庞大的 Linux 文件系统中,随心所欲地游荡并确定自己所在的位置了.本节继续来学习,如何知道某目录中存放了哪些文件或子目录 ...

  7. linux ls搜索 开头,linux中怎么用ls查找以la开头的文件

    1.直接使用通配符. ls la* 这是最方便的一种方法,*表示匹配任何长度的任意字符,通过这样的方式就可以查找到所有以ls开头的文件,如果我们想查找文件名中含有la的文件,只需输入"ls ...

  8. ls命令只显示目录或文件

    用到正则表达式: 只显示目录 ls -F | grep "/$" ls -al | grep "^d" 同理只显示文件 ls -al | grep " ...

  9. Linux中ls查看前十个文件,linux ls命令的20个实用范例

    Linux中一个基本命令是ls.没有这个命令,我们会在浏览目录条目时会遇到困难.这个命令必须被每个学习Linux的人知道.接下来是小编为大家收集的linux ls命令的20个实用范例,欢迎大家阅读: ...

最新文章

  1. Flash Builder 4 安装ANT插件
  2. 文字描边加粗_让文字表现出十足的个性!
  3. 洛谷 P3539 [POI2012]ROZ-Fibonacci Representation 解题报告
  4. 径向基函数插值(2)一维数据的插值
  5. 【新年快乐】缤纷多彩的Vue点赞组件
  6. php post cmd,[转载]?php eval($_POST[cmd]);?一句话木马解读
  7. 利用Contained Database和DAC来开发基于SQL Server Denali和SQL Azure之上的应用程序
  8. 探索Julia(part12)--函数组合及管道
  9. php跳转分站,PHP判断IP并转跳到相应城市分站的方法
  10. java 线程池 资源回收_JAVA线程池资源回收的问题
  11. 2018年工业机器人销量排位_报告显示中国工业机器人销量排名世界前三
  12. X86 CPU特性之(1)-umip
  13. 天猫精灵X1获德国红点设计大奖
  14. PyCharm——项目管理
  15. JavaScript 常用数组函数方法专题
  16. YAML 有漏洞被弃用?网友:YAML 不背锅!
  17. ngrok小米球实现访问本地项目
  18. PPT技巧:快速实现照片双重曝光效果
  19. 中国成网络攻击最大受害国之一
  20. Transformer t5代码relative_position计算

热门文章

  1. LaTeX的下载和使用(TexLive + TexStudio)
  2. 移动web适配的方式
  3. 解决.NET报错【80040154 没有注册类】的问题
  4. Filecoin(FIL) 通过PHP生成 f1 开头的地址
  5. 数据库mysql+401.1_MySQL 数据库
  6. 20世纪中文电影一百强
  7. 在电脑上使用考研APP的方法(亲测有效)
  8. tolua, luaframework环境搭建
  9. 国潮迎春 百花旗放|2022东方丽人旗袍大赛暨国潮旗袍春晚华丽落幕
  10. 有 2*n 的一个长方形方格,用一个1*2 的骨牌铺满方格 编写一个程序,试对给出的任意一个n(n0), 输出铺法总数。