是否可以创建一个 txt,列出目录中的文件夹以及该文件夹的创建日期(或 ctime)?
就像是:
文件夹.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 之后发生),也不一定反映文件链接到目录的时间(按您当前引用的名称)当文件被重命名或链接到另一个目录(或与不同的名称相同)时,出生时间不会更新。
最好的方法通常是使用最后修改时间。这更好地代表了文件中数据的年龄。
使用 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/))
(为您提供与 相比的排序列表find
。您可以使用oN
glob 限定符禁用排序,或使用 修改时间排序om
)
答案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"