Hok*_*rie 124 unix bash shell date file
我似乎无法找到如何打印出文件的日期.我到目前为止能够打印出目录中的所有文件,但我需要用它打印出日期.
我知道我需要在条目的回显处添加日期格式,但是我找不到正确的格式.
echo "Please type in the directory you want all the files to be listed"
read directory
for entry in "$directory"/*
do
echo "$entry"
done
Run Code Online (Sandbox Code Playgroud)
小智 204
'date'命令不是更简单吗?不需要awk,stat等.
date -r <filename>
Run Code Online (Sandbox Code Playgroud)
另外,请考虑查看手册页以获取日期格式; 例如,具有共同的日期和时间格式:
date -r <filename> "+%m-%d-%Y %H:%M:%S"
Run Code Online (Sandbox Code Playgroud)
小智 131
您可以使用该
stat
命令
stat -c %y "$entry"
Run Code Online (Sandbox Code Playgroud)
更多信息
%y time of last modification, human-readable
Dan*_*s W 13
在OS X上,我喜欢我的日期格式YYYY-MM-DD HH:MM为文件的输出.
所以要指定一个我会使用的文件:
stat -f "%Sm" -t "%Y-%m-%d %H:%M" [filename]
Run Code Online (Sandbox Code Playgroud)
如果我想在一系列文件上运行它,我可以这样做:
#!/usr/bin/env bash
for i in /var/log/*.out; do
stat -f "%Sm" -t "%Y-%m-%d %H:%M" "$i"
done
Run Code Online (Sandbox Code Playgroud)
此示例将在上次运行sudo periodic daily weekly monthly命令时打印出来,因为它引用了日志文件.
要在每个日期下添加文件名,我将运行以下代码:
#!/usr/bin/env bash
for i in /var/log/*.out; do
stat -f "%Sm" -t "%Y-%m-%d %H:%M" "$i"
echo "$i"
done
Run Code Online (Sandbox Code Playgroud)
输出如下:
2016-40-01 16:40
/var/log/daily.out
2016-40-01 16:40
/var/log/monthly.out
2016-40-01 16:40
/var/log/weekly.out
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不确定如何防止换行并将文件名附加到日期的末尾而不向脚本添加更多行.
PS - 我使用,#!/usr/bin/env bash因为我白天是Python用户,并且bash在我的系统上安装了不同版本而不是#!/bin/bash
添加到@StevePenny答案,您可能想要删除不那么人类可读的部分:
stat -c%y Localizable.strings | cut -d'.' -f1
Run Code Online (Sandbox Code Playgroud)