bash选择目录中最旧的文件夹并写入日志

时间:2016-11-22 13:01:39

标签: bash

bash下方,选择目录中最旧的文件夹。如果目录3中有/home/cmccabe/Desktop/NGS/test个文件夹,并且没有对它们执行任何操作(即没有删除,重命名的文件),则bash会将f1正确识别为最早的文件夹。但是,如果对文件夹执行了某些操作,则bash会将f2标识为最早的文件夹。我不知道为什么或如何防止这种情况发生。谢谢你:)。

目录中的文件夹

f1
f2
f3

# oldest folder used analysis and version log created
dir=/home/cmccabe/Desktop/NGS/test
{
read -r -d $'\t' time && read -r -d '' filename
} < <(find "$dir" -maxdepth 1 -mindepth 1 -printf '%T+\t%P\0' | sort -z )
printf "The oldest folder is $filename, created on $time and analysis done using v1.3 by $USER at $(date "+%D %r")\n" >> /home/cmccabe/Desktop/NGS/test/log
echo "$filename"

2 个答案:

答案 0 :(得分:2)

编辑文件夹或文件夹中的文件时,会更新文件夹的修改日期。不保存文件夹的创建日期。有关详细信息,请参阅此问题How to get file creation date/time in Bash/Debian?

答案 1 :(得分:1)

您使用find的想法是正确的,但稍微调整一下

$ IFS= read -r -d $'\0' line < <(find . -maxdepth 1 -type d -printf '%T@ %p\0' \ 
    2>/dev/null | sort -z -n)

$ printf "The oldest directory: %s\n" "${line#* }"

与回答here的人类似。