A. 我使用以下代码获取文件的修改日期。但这也会选择子目录,因此返回错误。我该如何修复此问题?
for file in $1/*; do
echo `stat -c %y $file | cut -d ' ' -f1`
done
$1
是我正在传递的目录。
B. 还有什么办法可以做到这一点。我需要传递目录和日期范围作为命令行参数,并列出位于此日期范围内的文件和修改日期。
例如,output.sh /home/user/desktop 2014-10-07 2014-11-17
应列出此目录中在此时间间隔内修改的所有文件。
答案1
答案2
对于 A 部分,更有效的方法:
find $1 -maxdepth 1 ! -type d -exec stat -c "%y" {} + | cut -d' ' -f1
find
非常适合根据类型进行过滤,并且exec
应该+
运行更少的stat
进程。将整个输出传输到cut
意味着我们只需运行cut
一次。而且真的没有必要这样做
echo `some command`
唯一的好处是将多行输出转换为单行,但无论如何这并不适用于您的情况。