-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
これは作成時間でソートされているため、最新のファイルが一番上にある
ため、結果が 1 つだけ必要な場合はhead -n 1 or head -1、コマンドの後に|
Hope を使用して追加できます。

于 2012-11-30T06:41:28.213 に答える