请原谅我,如果这是非常明显的事情,因为我是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
答案 0 :(得分:1)
您已经应该使用的功能
lsf() {
FILTER="$1"
ls -lh ${FILTER} | awk '{print $5, $6, $7, $8,$9}'
}
可能就是你调用它的方式,使用
$ lsf 'tfp*acf.csv' #quotes