如何知道当前用户创建的最后一个文件位于何处?

如何知道当前用户创建的最后一个文件位于何处?

我使用 Ubuntu 16.04 (xenial) 和 Bash 4.3.48(1) 和zip3.0。

在包含具有许多不同函数的bash脚本()的文件中#!/bin/bash,我也有这个函数用于创建一个 zip 文件中的完整数据库备份 + 文档根备份:

imb() {
    drt="/var/www/html"
    date="$(date +%F-%T)"
    mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip" - # Note the hyphen before this comment;
    zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"
    rm -f "$drt/db-$date.zip"
}

我获取了上述文件 ( source ~/function.sh) 并imb在调试模式下执行 ( set -x):

系统提示我输入数据库密码,然后过了一段时间(表明已创建数据库备份)。此外,还出现了一个详细的 zip(太长,无法在终端中粘贴或跟踪),表明文档根目录下的所有内容都已被压缩。

但 下没有出现备份/var/www/html/

我的问题

由于评论,我觉得我应该问两个问题,我发现它们相似但实际上不同:

  1. zip 将我的文件放在哪里(例如,假设这不是手动创建意义上的“文件创建” touch)?当然,由进程创建和位于某处的文件不一定归我的用户所有。

  2. 我怎样才能找到最后一个文件创建的位置由我当前的用户,位于?

我预计它位于/var/www/html/

zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"

但事实并非如此。我不知道一种有效的方法来知道它是在哪里创建的,而不需要在我的系统的整个文件树上从根(/)开始运行,因为这可能需要在该机器上花费几个小时。

更新

在写这个问题时,我访问了我的主目录($HOME/),在那里我找到了该文件,但我不知道为什么它是在那里创建的,而不是在文档根目录下创建的。

答案1

zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"

在当前目录中创建一个存档,无论该目录是什么(在本例中为您的主目录)。

如果您想在 中创建存档${drt},您需要告诉zip

zip -r "${drt}/all_zipped-$date.zip" "$drt"/ -x "*/cache/*"

没有简单的方法可以找出任何给定用户创建的最后一个文件的位置;您需要使用时间戳find并按递减时间戳进行排序。使用上次修改时间作为创建时间的近似值:

find . -user user9303970 -printf "%T@ %p\n" | sort -n -k1,1 -r | head -n 1

相关内容