linux的ll命令在aix是什么呢,需要为Linux脚本相当于AIX脚本 - 特别是find命令

您遇到的问题不是一个shell的问题。这是你的find命令不兼容。

我猜你正在Linux上运行Bash,在Solaris上运行Kornshell。问题在于你的Linux机器有GNU版本的find命令,其中有-printf参数,而你的其他系统上的find命令不会因为它使用BSD或AT Unix版本的命令。

你需要做的是使用系统的stat命令来拉你从文件所需的信息:

find "/path/to/pdfs/" -type f -name "$1*.pdf" -exec stat ??? {}\; | sort ...

问题是我不知道stat命令的格式。不幸的是,这个命令因系统而异。看起来您正在根据关于find time directives的GNU文档创建排序修改日期。这里是我的Mac上运行小牛等价物:

find "/path/to/pdfs/" -type f -name "$1*.pdf" -exec stat -f "%10Dm %SN" {}\; | sort ...

的-f参数指定统计如何将其打印信息的格式。在“%10Dm specifies 10 decimal digits ( d) of the modification time米. The%SN`指定字符串格式文件的名称,这打印日期的秒从历元(通常是1970年1月1日)的数量。

在原来的排序,你被指定的日期时间标记的每一个领域(这是不是真的有必要,那么你的sort会更简单:

find "/path/to/pdfs/" -type f -name "$1*.pdf" -exec stat -f "%10Dm %SN" {}\; \

| sort -k1,1n -k2,2

不幸的是,这并不像你一个很好的整齐格式打印出来的时间因此,我们将在排序后剥离文件名并通过stat再次打印文件

find "/path/to/pdfs/" -type f -name "$1*.pdf" -exec stat -f "%10Dm %SN" {}\; \

| sort -k1,1n -k2,2 sed 's/.* //'

| while read file

do

stat "%-22.22Sm %N" $file

done

这将打印出的文件为:

Dec 12 15:38:43 2013 /path/to/pdfs/list1.pdf

不完全一样,但已经很接近了。实际上,在我的Mac上,我可以从第一个stat命令中获取日期的数字输出,并将其转换为所需格式的日期字符串。

不幸的是,date命令的这个特殊功能与find中的-printf参数具有相同的问题:它是特定于计算机的,因此它在Linux上不起作用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值