2016-04-11 15 views
0

私は使用しています|並べ替えられたファイルを読み込みます。私は、ディレクトリ/テストにfindを使って最新のファイル名を読む

files=($(find /test/ | sort)) 

を行うときには、私は別の順序でファイル名を取得します。

ls -lhtr 

ファイル名の取得方法は、ls -lhtrと同じ方法で行いますか?私は最初に最新のファイル名を読んでみたいと思います。

+0

ソート可能な形式(例:日付+時間はYYYY-mm-dd HH:MM:SS、1970年以降はUnixタイムスタンプ - 秒)で名前を変更するだけで印刷できます。 -01-01 00:00:00 +00:00)。 'ls -lhtr'があなたに与えるように、それらのプレーンなソートは最後のものを順番に返します。 'find'の' -printf'が修正時間を適切に印刷できるかどうか調べてください。 –

+0

@JonathanLeffler、私は使用しています 'find/test/-printf%TY-%Tm-%Td%TT%p \ n" | sort -n' しかし、私は最も古いファイルを最初に取得しています。どうすれば最新のものを取得する必要がありますか? – jimmy

+0

コードをバッククォートのコメントに入れてください。あなたが示唆していることは、ほとんど妥当と思われますが、数値ソートを行いたくないです。 ISO 8601形式の日付は、通常の並べ替えを使用してソートされます。したがって、 'find/sapfiler/WEBADM/test/-printf"%TY-%Tm-%Td%TT%p \ n "|あなたが名前に改行を含むファイルを持っていない限り、 'sort'は動作するはずです。 –

答えて

0

複数のコメントを回答に転送する。

あなたは(ソート可能な形式の名前だけでなく、修正時間を印刷するようにしなければならないと思い例えば、YYYY-MM-DD HH:MM:日付+時間SS、あるいはUnixタイムスタンプとして - 1970-01-01 00:00:00 + 00:00以降の秒数)。彼らの普通の並べ替えは、ls -lhtrがあなたに与えるように、最新の最後のものを順番に返します。 GNU findから-printfを調べてください。修正時間を適切に印刷できます。

私はfind /test/ -printf "%TY-%Tm-%Td %TT %p\n" | sort -nを使用していますが、私は最も古いファイルを最初に取得しています。最新のものを最初に取得するにはどうすればよいですか?

あなたが示唆していることはほとんど当てはまりますが、数値ソートを行いたくないと思います。 ISO 8601形式の日付は、通常の並べ替えを使用してソートされます。したがって:

find /sapfiler/WEBADM/test/ -printf "%TY-%Tm-%Td %TT %p\n" | sort 

は、限り、あなたは名前に改行を持つファイルを持っていないとして、まず最も古いファイルをリスト、動作するはずです。

最新のものを最初に使用したい場合は、逆順で並べ替える必要があります。したがって、sortの代わりにsort -rを並べ替える必要があります。これが最後の最新のファイルの一覧が表示されますls -lhtrにより提供されるため、逆のことを

find /sapfiler/WEBADM/test/ -printf "%TY-%Tm-%Td %TT %p\n" | sort -r 

注意。

関連する問題