1

次のような特定のシェルスクリプトがあります。

for name in `find $1 -name $2 -type f -mmin +$3`
do
Filename=`basename "ls $name"`
echo "$Filename">>$1/order.txt
done

find コマンドは、アルファベット順に N 個のファイルを返します。それらの名前はアルファベット順に order.txt に挿入されます。これを変更時間順に変更するにはどうすればよいですか?

つまり、ファイル F2 が最初に変更され、次にファイル F1 が変更された場合、上記のスクリプトはアルファベット順に最初に F1、次に F2 を order.txt に入力します。しかし、F2を最初に入力してからF1を入力したいのですが、それは変更時間の順序です

スクリプトの後に order.txt が必要です
Order.txt=>
F2
F1


F1
F2としてではなく

助けてください

4

3 に答える 3

0

ここに行きます

find_date_sorted() {
    # Ascending, by ISO date
    while IFS= read -r -d '' -u 9
    do
        cut -d ' ' -f 3- <<< "$REPLY"
    done 9< <(find ${1+"$@"} -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\0' | sort -z)
}
于 2012-03-13T12:29:34.340 に答える
0
for name in `find $1 -name $2 -type f -mmin +$3`
do 
ftime=$(stat -c %Y $name)
Filename=`basename "ls $name"`
echo "$ftime $Filename"
done | sort -n | awk '{print $2}' > $1/order.txt

1 つの方法: エポックからの秒数でファイル mtimes を取得し、エポックからの秒数でソートしてから、ファイル名のみを出力します。

于 2012-01-14T23:18:19.470 に答える