【发布时间】:2014-03-28 12:16:28
【问题描述】:
我在一个目录中有一组文件。我只想从 ls 输出中提取不带绝对路径和修改时间戳的文件名。
/apps/dir/file1.txt
/apps/dir/file2.txt
现在我从 ls 输出中提取出文件名和时间戳的字段
ls -ltr /apps/dir | awk '{print $6 $7 $8 $9}'
Sep 25 2013 /apps/dir/file1.txt
Dec 20 2013 /apps/dir/file2.txt
Dec 20 2013 /apps/dir/file3.txt
而我希望它是这样的
Sep 25 2013 file1
Dec 20 2013 file2
Dec 20 2013 file3
一种解决方案可以是 cd 到该目录并从那里运行命令,但是没有 cd 是否有可能的解决方案?我也使用了 substr() 但由于文件名的长度不相等,因此将常量值传递给 substr() 函数没有成功。
【问题讨论】:
-
不要解析 ls 命令的输出,而是使用 stat。阅读here
-
即使您
cd到目录并从那里运行命令,您仍然会在文件名上获得.txt。你想去掉那个吗? -
是的,我也想删除该扩展名。为此,如果我们可以到达文件名的开头,我们可以使用 substr() 删除它。这就是我最初的想法。