bash列表文件ctime - filename - 和每个文件的第一行?

时间:2012-11-29 22:39:00

标签: bash

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

目录/ reports /中的文件:

ctime - filename - 1st line text

I've found the perfect soluton here

#!/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

2 个答案:

答案 0 :(得分:2)

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

man find

听起来像家庭作业。对 ? =)

答案 1 :(得分:2)

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