【发布时间】:2015-08-25 20:21:24
【问题描述】:
我想在 AIX 系统上执行类似 ls -l --time-style="+%s" 的命令。
我只需要文件的时间戳和文件名。
与this answer,我做了:
find . -type f -exec perl -le 'print((stat shift)[9])' {} \;
但我找不到用 Perl 打印文件名的方法(我不懂语言,而且单行语法有问题)。
我正在尝试这样的事情:
perl -le 'print((stat shift)[9] . " ???")' foo.txt
谁能帮帮我?
【问题讨论】:
-
你不需要 Perl 来做这个:
find . -type f -printf '%T@ %p\n'。如果您确实使用 Perl,将输出从find直接通过管道传输到perl会更有效,这样您就不会为每个文件单独调用解释器:find . -type f -print0 | perl -0E 'say((stat)[9] . " $_") while <>'(我认为-print0是 GNU 扩展所以你的find版本可能没有它。) -
@ThisSuitIsBlackNot 在我的 AIX 7.1 系统上, find 命令上没有
-printf或-print0。我不知道是否还有改进的可能...... -
所以我猜你确实需要 Perl。
-print0允许您安全地处理包含换行符的文件名;如果你确定你的文件名都不包含换行符,你可以修改我给find . -type f | perl -nlE 'say((stat)[9] . " $_")'的第二个命令@