【问题标题】:bash to select oldest folder in directory and write to logbash 选择目录中最旧的文件夹并写入日志
【发布时间】:2017-04-06 04:05:30
【问题描述】:

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

目录中的文件夹

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"

【问题讨论】:

    标签: bash


    【解决方案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 的回答。

    【讨论】:

    • @Chris:乐于助人!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      • 2020-10-25
      • 1970-01-01
      • 2012-12-03
      • 2022-01-07
      • 2015-12-10
      相关资源
      最近更新 更多