-6

我的目录中的文件很少。我需要在 bash 脚本中显示以下列:

目录 /reports/ 中的文件:

ctime - filename - 1st line text

我在这里找到了完美的解决方案

#!/bin/sh

MYPATH=/
TOTALFILE=$(ls $MYPATH/* | wc -l)
FILE=$(ls -1tcr $MYPATH/* | head -5 | rev | cut -d/ -f1 | rev)

declare -a FILES
declare -a FILETIME

OUTPUT="FILENAME CREATED TIME ERROR_HEADER\n\n------------------------------ ----------------------------- ----------------------------------- ------$

for i in $MYPATH/*;
do
    FILES[${#FILES[@]}]="$i"
    FILETIME[${#FILETIME[@]}]=$(stat --format=%y $i | head -5 | cut -d'.' -f1)
    TOPLINE=$(head -1 $i | grep -Po '".*?"' | head -5)

    OUTPUT="$OUTPUT\n${FILES[${#FILES[@]}-1]} ${FILETIME[${#FILETIME[@]}-1]} $TOPLINE\n"
done

echo -ne $OUTPUT | column -t
4

2 回答 2

2
find . -type f -printf '%a %p ' -exec head -n1 {} \;

man find

听起来像一个家庭作业。正确的 ?=)

于 2012-11-29T22:44:05.997 回答
2

find /reports -type f | xargs ls -lt
这是按创建时间排序的,所以
如果你只想要一个结果,最新的文件在顶部,你可以在 希望有帮助head -n 1 or head -1的命令后添加。|

于 2012-11-30T06:41:28.213 回答