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

Bash 如何编写一个函数,根据搜索模式打印文件名和上次修改的日期?,bash,macos,terminal,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

原谅我,如果这是非常明显的事情,因为我是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
}

但两个都不能正常工作。我感谢你的帮助


附加信息:我正在OSX上使用bash,您已经拥有的功能应该可以使用

lsf() {

  FILTER="$1"
  ls -lh ${FILTER} | awk '{print $5, $6, $7, $8,$9}'
}
可能是您调用它的方式,使用

$ lsf 'tfp*acf.csv' #quotes

这是脚本吗?@TheGirrafish这是我的.bashrc文件为什么不在你的.bashrc文件中创建一个别名呢?@TheGirrafish谢谢你的评论。我是。我想把搜索模式变成一个函数参数。这就是我遇到问题的地方,因为要么函数没有给我输出,要么它只显示第一个输出(当文件夹包含多个与模式匹配的文件时)。太好了!谢谢它与引号一起工作。为了使它更简单,我如何更新这个函数,以便在没有引号的情况下使用它。因此,
lsf tfp*acf.csv
问题在于当shell扩展值时,函数将接收什么作为参数。尝试
echo lsf'tfp*acf.csv'
echo lsf tfp*acf.csv
Ok,这样后者会计算通配符,这就解释了为什么在包含引号之前,我最初会得到一个输出。那么你是说不可能编写这个函数,使参数不包含任何引号?
$ lsf 'tfp*acf.csv' #quotes