Bash - ファイルリストを含むtxt + ctime

Bash - ファイルリストを含むtxt + ctime

ディレクトリ内のフォルダとフォルダの作成日(またはctime)を一覧表示するtxtを作成できますか?

それは次のとおりです。

フォルダー.txt:

フォルダ1 2016/08/02

フォルダA 2016/08/03

現在持っている情報は次のとおりです。しかし、作成日はありません。

find /directory/* -type d -exec bash -c 'echo ${0#/directory/}' {} \; > /directory/folders.txt

答え1

ctimeありますので参考にしてくださいinode 変更状態時間、生成時間ではなく、inode生成時間とも呼ばれる生成時間は時々呼び出されますが、btimeすべてのUnicesまたはすべてのファイルシステムで使用できるわけではありません。

たとえば、Linuxでは、ほとんどの基本ファイルシステムに出生時間が記録されますが、現在それを取得できるAPIはありません。

それにもかかわらず、これはinodeが最後にアクティブになった時間です。これは、データが挿入された時期(通常はinodeが作成された後に発生します)を反映するわけではなく、ファイルの名前が変更されたり、ファイルがディレクトリにリンクされた時期(現在参照している名前で)を必ずしも反映するわけではありません。別のディレクトリに接続している場合(または他の名前と同じ)、生年月日は更新されません。

最良の方法は、通常、最後の修正時間を使用することです。これはファイル内のデータの寿命をよりよく表します。

GNUでは、find次のことができます。

find /directory -mindepth 1 -maxdepth 1 -type d -printf '%P %TY/%Tm/%Td\n'

そしてzsh

zmodload zsh/stat
(cd /directory && zstat -LF '%Y/%m/%d' +mtime -- *(D/))

(と比較してソートされたリストを提供します。glob修飾子を使用してソートを無効にしたり、変更時間を使用してソートしたりfindできます)oNom

答え2

通常ls -lc、これを行う必要があります。しかし、これはファイルとディレクトリを示しています。

したがって、私は詐欺を書いて入力するように求めることができます*/。ディレクトリだけが一致します。しかし、-dフラグも必要です。

ls -lcd */

特定のレイアウトが欲しいからといって、ls必ずしも最良の出力が必要なわけではありません。

statお持ちの場合は、次のものを使用できます。

stat --format="%n %z" */

シンボリックリンクがディレクトリを指している場合は、両方ともシンボリックリンクに従います。

これを望まない場合は、以下を使用できますfind

find * -maxdepth 0 -type d -printf "%p %c\n"

再帰したい場合

find * -type d -printf "%p %c\n"

関連情報