使用pdksh
stat()
命令在系统上不可用。
我需要遍历找到的文件数量并将它们的日期存储在一个数组中。$COMMAND
存储在中找到的文件数,$location
如下所示。
有人能帮助我吗?
COMMAND=`find $location -type f | wc -l`
CMD_getDate=$(find $location -type f | xargs ls -lrt | awk '{print $6} {print $7}')
好吧,首先,您不需要执行wc
. 数组的大小会告诉你有多少。这是构建日期和名称数组的简单方法(专为 pdksh 设计;在 AT&T ksh 或 bash 中有更好的方法):
set -A files
set -A dates
find "$location" -type f -ls |&
while read -p inum blocks symode links owner group size rest; do
set -A files "${files[@]}" "${rest##* }"
set -A dates "${dates[@]}" "${rest% *}"
done
这是检查结果的一种方法:
print "Found ${#files[@]} files:"
let i=0
while (( i < ${#files[@]} )); do
print "The file '${files[i]}' was modified on ${dates[i]}."
let i+=1
done
这将为您提供完整的日期字符串,而不仅仅是月份和日期。这可能是您想要的 - ls -l
( 或find -ls
) 的日期输出是可变的,具体取决于文件被修改的时间。鉴于这些文件,您的原始格式如何区分 和 的修改a
时间b
?
$ ls -l
total 0
-rw-rw-r--+ 1 mjreed staff 0 Feb 3 2014 a
-rw-rw-r--+ 1 mjreed staff 0 Feb 3 04:05 b
如所写,上面的代码将为上面的目录产生这个location
= .
:
Found 2 files:
The file './a' was modified on Feb 3 2014.
The file './b' was modified on Feb 3 00:00.
如果您指出实际的最终目标是什么,那将会有所帮助。