之后的当前目录被其他用户移动



我有一个在文件夹 a 上打开的终端:

hostname:/path/to> mkdir a
hostname:/path/to> cd a
hostname:/path/to/a> cat > b.txt

其他用户已将该文件夹移动到其他位置

hostname:/path/to> mv a /another/hidden/path/i/dont/know

我想知道他把它移到哪里去了。

旧终端仍然有效,但 pwd 显示旧路径,因为 linux 文件系统的工作方式。当然,旧的绝对路径并不存在:

hostname:/path/to/a> ls
b.txt
hostname:/path/to/a> pwd
/path/to/a
hostname:/path/to/a> ls /path/to/a
ls: cannot access /path/to/a: No such file or directory

我想过遍历上层层次结构并在每个级别中查找正确的文件夹:

hostname:/path/to/a> ls ../
...
hostname:/path/to/a> ls ../../
...
hostname:/path/to/a> ls ../../../
...

但是,如果其中一个级别包含大量子目录,则此解决方案可能非常困难。在我的特定情况下,这是不可能的,因为我没有上层之一的权限。

我想由于 linux fs 的工作方式,可能无法找到确切的路径(例如,同一目录可能有很多硬链接)。我不在乎为路径找到一些候选者,有没有办法找到一个绝对路径,使我能够接近目录?

您可以尝试find / -d -name "a" -exec cd {} ;更改为移动的目录,假设用户没有更改其名称。如果要获取移动目录的路径,请使用find / -d -name "a" -exec echo "path is {}" ;

编辑

如果有更多同名目录,并且您知道目录的移动时间,请使用find / -d -name "a" -mmin -$minutes -exec echo "path is {}" ; 其中 $minutes 是更改时间,以查找在指定时间段内更改的所有目录名称"a"。

如果有人重命名并移动了目录,则需要做一些手动工作。使用 find / -d -mmin -$minutes -ls 列出指定时间段内更改的所有目录。

正如hellerpop所说,你可能想使用-cmin而不是-mmin

回答我自己的问题:我可以在一个唯一命名的子文件夹上使用 lsof(我应该遍历它,以便它被视为"打开"):

hostname:/path/to/a> mkdir uniquely_named_directory
hostname:/path/to/a> cd uniquely_named_directory
hostname:/path/to/a/uniquely_named_directory> lsof | grep uniquely_named_directory

只有当我有这样的文件夹或对该文件夹具有写入权限时,才能完成。或者,如果我知道该文件夹未重命名并且名称足够特殊,我可以简单地尝试"lsof |格雷普·

(基于此处在已删除答案中提出的想法...

相关内容

  • 没有找到相关文章

最新更新