オペレーティングシステム: Linux
ファイルシステムの種類:拡張子3
推奨ソリューション: Bash (スクリプト/ワンライナー)、Ruby、または Python
複数のサブディレクトリとファイルを含む複数のディレクトリがあります。これらのディレクトリすべてのリストを作成し、そのリストは、すべての第 1 レベルのディレクトリが、その中の最後に作成/変更されたファイルの日時の横にリストされるように構成する必要があります。
明確に言うと、ファイルを操作したり、いくつかのサブディレクトリ レベル下のその内容を変更したりした場合、そのタイムスタンプは第 1 レベルのディレクトリ名の横に表示されるはずです。次のような構造のディレクトリがあるとします。
./alfa/beta/gamma/example.txt
ファイルの内容を変更する場合example.txt
、エポックではなく、人間が読める形式で第1レベルのディレクトリの横に時間を表示する必要がありますalfa
。findを使用していくつかのことを試しました。xargs
、sort
などですが、数レベル下のファイルを作成/変更しても 'alfa' のファイルシステムのタイムスタンプが変更されないという問題を回避できません。
ベストアンサー1
これを試してみてください:
#!/bin/bash
find $1 -type f -exec stat --format '%Y :%y %n' "{}" \; | sort -nr | cut -d: -f2- | head
再帰的にスキャンを開始するディレクトリへのパスを指定して実行します (スペースを含むファイル名をサポートします)。
ファイルの数が多い場合は、何かが返されるまでに時間がかかることがあります。xargs
代わりに以下を使用するとパフォーマンスが向上します。
#!/bin/bash
find $1 -type f -print0 | xargs -0 stat --format '%Y :%y %n' | sort -nr | cut -d: -f2- | head
少し速くなります。