gpt4 book ai didi

linux - 如何从命令行更改 Linux/Unix 中的目录结构?

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:52 25 4
gpt4 key购买 nike

这是我想要做的:给定目录“XYZ”,我希望能够设置 XYZ,一旦在其中创建了新的子目录(“ABC”),默认情况下该子目录包含 3子目录(“1”、“2”、“3”)。例如:ls -la/ABC/XYZ/将显示 3 个文件夹,而无需我手动创建这 3 个文件夹

最佳答案

使用inotify 来监控文件系统事件并在捕获'create driectory ABC in XYZ' 事件时执行相关操作。这是来自 http://onestraw.net/essay/inotify/ 的示例

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/inotify.h>

#define MONITOR_PATH "/var/onestraw/"
#define MONITOR_MASK IN_CREATE | IN_DELETE | IN_ACCESS | IN_MODIFY

inline void _err(const char *str)
{
perror(str);
exit(1);
}

inline void inotify_loop(int fd)
{
char buf[4096];
size_t len;
struct inotify_event *event;
while (1) {
len = read(fd, buf, sizeof(buf));
if (len < 0) {
_err("read() failed");
}
for (event = (struct inotify_event *)buf;
(char *)event < &buf[len];
event =
(struct inotify_event *)((char *)event + sizeof(*event) +
event->len)) {
if (event->mask & IN_CREATE)
printf("add %s\n", event->name);
if (event->mask & IN_DELETE)
printf("delete %s\n", event->name);
if (event->mask & IN_ACCESS)
printf("access %s\n", event->name);
if (event->mask & IN_MODIFY)
printf("modify %s\n", event->name);
}
}
}

int main(int argc, char *argv[])
{
int fd;

if ((fd = inotify_init()) < 0) {
_err("inotify_init() failed");
}
//if (inotify_add_watch(fd, argv[1], MONITOR_MASK) < 0) {
if (inotify_add_watch(fd, MONITOR_PATH, MONITOR_MASK) < 0) {
_err("inotify_add_watch() failed");
}

inotify_loop(fd);
return 0;
}

关于linux - 如何从命令行更改 Linux/Unix 中的目录结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37205462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com