用于查找更新和新添加的文件/文件夹的Unix命令

时间:2011-08-17 07:33:00

标签: unix filesystems find command

我需要找出在两个不同时间(脚本开始和结束时间)之间在文件系统路径(/home/user01/myapps/)中添加/更新的文件或文件夹列出的内容。

我正在运行一个Shell脚本来更新/添加新文件到不同来源的资源路径/home/user01/myapps/。因此,在脚本结束时,我想知道已添加或更新的文件或文件夹列表。

我有以下命令

  

查找/ opt / app / tds / tdsbatch -mtime -1

但是,我不确定脚本的运行时间。

确实有任何帮助!

2 个答案:

答案 0 :(得分:4)

在任何需要的时刻记录时间:

# record the current time in seconds on script startup
start_time=$(date +%s)
...
# do whatever you like
...
# to get the runtime in secods - if you like:
runtime=$(($(date +%s) - start_time))
# to get the runtime in minutes (minutes are useful for -mmin find param)
runtime=$((($(date +%s) - start_time) / 60))
...
# to record the finish time in seconds:
end_time=$(date +%s)

现在find根据您的需要。

之类的东西
find /path \( -mmin $((-($(date +%s) - start_time) / 60)) \
  -a $((($(date +%s) - end_time) / 60)) \)
  • 第一个-mmin参数指定修改后(当前时间 - 脚本开始时间)从现在开始修改分钟
  • 第二个-mmin参数指定修改之前(当前时间 - 脚本结束时间)从现在开始修改分钟
  • 它们都与-a参数一起并附在前缀括号中

你可能会这样做。否则我需要更多关于你的需求的澄清。

答案 1 :(得分:0)

在脚本开始时,您可以对任何现有文件使用touch命令或创建虚拟文件。

e.g。

脚本启动

touch filename1 - 它会将filename1的时间戳更改为当前时间

然后在脚本结束时,您可以使用以下命令:

查找目录名称-newer filename1

它将在该目录中的filename1的时间戳之后修改或创建所有文件