Python:如何在 Linux 的特定目录中找到上一小时创建的新文件夹/目录

标签 python linux bash

我正在尝试编写一个 python 程序,该程序调用 bash 脚本以在目录中的新数据上运行。

我的目录中有数百个子目录。每小时生成几个子目录。我试图进入这些新的子目录并在其中的数据上运行我的脚本。

假设我的目录路径是/data1/realtime:

在“realtime”目录中,每小时都会生成新的子目录。我如何知道每小时生成的新子目录并逐一进入其中的每一个......?

非常感谢!!

是的

最佳答案

使用 find命令(在你的 shell 中):

find /data1/realtime -mmin -60 -type d

它将打印所有在过去 60 分钟内已创建或已添加、删除或重命名文件或子目录的目录。

您当然可以从 Python 的 subprocess module 中调用它如果需要,但由于您已经在使用 bash,也许您可​​以直接在 bash 脚本中使用它?

下面是如何使用 subprocess 调用 find:

import subprocess
directories = subprocess.check_output(
    ['find', '/data1/realtime', '-type', 'd', '-mmin', '-60']
).splitlines()
# directories content: ['/data1/realtime/dir1000', ...]

这可能会捕获正在创建的目录,就像 msw 在评论中说的那样,所以如果你想找到最近一小时但最近不超过 5 分钟前创建的目录,你可以添加另一个测试查找:

find /data1/realtime -mmin -60 -mmin +5 -type d

为了看看这是如何工作的,这里有一个 bash session :

$ find --version
find (GNU findutils) 4.4.2
...
$ mkdir /tmp/test
$ cd /tmp/test
$ date 
Mon Feb  9 21:27:00 CET 2015
$ touch a
$ touch -t 02092100 b  # 27 minutes ago
$ touch -t 02082100 c  # yesterday
$ ls -alh
total 0
drwxr-xr-x  2 andre andre 100 Feb  9 21:27 .
drwxrwxrwt 24 root  root  520 Feb  9 21:26 ..
-rw-r--r--  1 andre andre   0 Feb  9 21:27 a
-rw-r--r--  1 andre andre   0 Feb  9 21:00 b
-rw-r--r--  1 andre andre   0 Feb  8 21:00 c
$ find . -mmin -60 -mmin +5
./b

正如预期的那样,新创建的文件 (a) 和昨天的文件 (c) 被排除在外,但包含 27 分钟前更新的文件 (b)。如果您是

关于Python:如何在 Linux 的特定目录中找到上一小时创建的新文件夹/目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28414501/

相关文章:

linux - 将代码写入输出文件的更快方法

python - 使用 python 连接到 Hbase 失败

python - Pandas - 合并两个具有不同行数的数据框

linux - mdadm:阵列在重新启动时消失,尽管 mdadm.conf 正确

linux - 检查远程进程是否正在运行(linux)

bash - 在 Fish Shell 中设置导出

python - 为什么 python F string 模块不起作用?

python - 字典中的条件键 - python

linux - 追踪 UNIX 信号来源?

linux - 将 bash 脚本上传到 MAAS 部署的 Ubuntu 机器上