Linuxコマンドを作成して、特定のディレクトリ(およびサブディレクトリ)内のすべてのファイル(およびそれらのフルパス)をアクセス時間順にリストしたいと思います。
lsはアクセス時間順に並べることができますが、完全なパスは提供しません。 findは完全なパスを提供しますが、アクセス時間を制御できるのは、-atime N(少なくとも24 * N時間前にアクセス)で範囲を指定することだけです。これは私が望んでいることではありません。
アクセス時間で注文し、一度にフルパスを取得する方法はありますか?スクリプトを書くことはできましたが、標準のLinuxプログラムでこれを行う方法があるはずです。
find . -type f -exec ls -l {} \; 2> /dev/null | sort -t' ' -k +6,6 -k +7,7
これにより、すべてのファイルが検索され、日付と時間でソートされます。その後、awk
またはcut
を使用して、ls -l
出力から日付とファイル名を抽出できます。
あなたが試すことができます:
ls -l $(find /foo/bar -type f )
ls
コマンドに他のオプション(ソート用の-tなど)を追加できます。find
cmdに追加できますfind . -type f | xargs ls -ldt
は、引数の制限などのコマンドを実行してlsの2つのインスタンスを生成するほど多くのファイルがない限り、このトリックを実行する必要があります。
pwd | xargs -I % find % -type f
find . -type f -exec ls -l --full-time {} \; 2> /dev/null | sort -t' ' -k +6,6 -k +7,7
Alexの答えは私にとってはうまくいきませんでした。なぜなら、1年以上前のファイルがあり、並べ替えがめちゃくちゃになったからです。上記は、日付/時刻の値を無効にし、それらが何歳であってもソート可能にする--full-timeパラメーターを追加します。