Linuxでファイルの現在の日付を取得しますか?

Linuxでファイルの現在の日付を取得しますか?

通常、date +%d現在の日付は2017年8月10日の出力を提供します。08ところで、そのパスで実行するとls -lrt日付形式は次のようになりますが、Oct 8 15:03どうすれば現在の日付のファイルを取得できますか?

私はコマンドを使用しています

ls -lrt XYZ.LOG* |grep "$(date +'%b %d')" |awk '{print $9}'

ただし、今日の日付(2017年8月10日)のファイルは提供されませんが、すべての月の日付10 - 31の正しい出力は提供されます。

答え1

これは少しトリックですが、動作します。

特定のタイムスタンプ(真夜中など)を持つ空の参照ファイルを作成することから始めます。

touch -d "$(date +%FT00:00:00)" /tmp/midnight

次に、そのファイルより最新のファイルを見つけます。

find . -type f -newer /tmp/midnight

パス名の代わりにls同様の出力が必要な場合:find

find . -type f -newer /tmp/midnight -ls

パターンに一致するファイルを見つけるには、次のようにしますXYZ.LOG*

find . -type f -name 'XYZ.LOG*' -newer /tmp/midnight -ls

GNUがある場合は、一時findファイルを無視して次のものを使用できます。

find . -type f -newermt 0

ファイルの変更は真夜中から始まりました。


関連:なぜ`ls`を解析しないのですか?

答え2

これを使用してstat(1)ファイルの変更時間を取得できますが、移植可能ではありません。

Linuxの場合:

$ stat -c %y some_file
2017-09-23 10:24:09.880806666 +0200

$ date -d @$(stat -c %Y some_file) +%d-%m-%Y
23-09-2017

BSDから:

$ stat -f %Sm -t %d-%m-%Y some_file
23-09-2017

答え3

現在の日付のファイルを取得する方法は?

エルエスこのコマンドは、オプション--time-styleで特定の形式で時間を印刷できます。

ls -l --time-style=+'%d-%m-%Y' | awk -v d=$(date +%d-%m-%Y) '$6==d'

--time-style=スタイル
STYLEスタイルを -l使用して時間を表示します。full-iso、long-iso、iso、local、または+ FORMAT解釈は 'date';

答え4

試してみました:

echo `date +'%Y-%m-%d'`*

関連情報