如何根据搜索模式编写打印出上次修改的文件名和日期的函数?

时间:2017-06-29 18:33:56

标签: bash macos terminal

请原谅我,如果这是非常明显的事情,因为我是bash的初学者。我正在尝试编写一个简单的函数,它将搜索模式作为输入,并打印出所有名称与搜索模式匹配的文件,以及上次修改文件时的大小,日期和时间。

我知道我已经可以用

做到这一点
ls -lh tfp*acf.csv | awk '{print $5, $6, $7, $8,$9}'

给出了

190B 24 Jun 21:41 tfp_est_nic20_acf.csv
189B 24 Jun 21:42 tfp_est_nic21_acf.csv
189B 24 Jun 21:43 tfp_est_nic22_acf.csv
190B 24 Jun 21:45 tfp_est_nic23_acf.csv
192B 24 Jun 21:46 tfp_est_nic24_acf.csv
189B 24 Jun 21:47 tfp_est_nic26_acf.csv
188B 24 Jun 21:48 tfp_est_nic27_acf.csv
191B 24 Jun 21:49 tfp_est_nic28_acf.csv

(以tfp * acf.csv为例),但每次输入awk'{print $ 5,$ 6,$ 7,$ 8,$ 9}'都有点麻烦。我想到的功能就像

一样简单
lsf tfp*acf.csv

并提供与上面相同的输出。我尝试使用find和ls编写函数(我读过的输出不应该被解析)。例如,我试过

lsf() {

  FILTER="$1"
  find . -name '$FILTER' -print0 | xargs -0 ls -lt
}

lsf() {

  FILTER="$1"
  ls -lh ${FILTER} | awk '{print $5, $6, $7, $8,$9}'
}

但无法让任何一个正常工作。感谢您的帮助。

其他信息:我在OSX上使用bash

1 个答案:

答案 0 :(得分:1)

您已经应该使用的功能

lsf() {

  FILTER="$1"
  ls -lh ${FILTER} | awk '{print $5, $6, $7, $8,$9}'
}

可能就是你调用它的方式,使用

$ lsf 'tfp*acf.csv' #quotes