2011-08-29 94 views
3

我想知道是否有一种简单而简洁的方式来编写将通过一系列目录的shell脚本(,一个用于每个班级中的学生)确定是否在该目录内有最后一天内修改过的任何文件,只有在这种情况下,该脚本才会创建一个子目录并将文件复制到那里。因此,如果目录在过去的24小时内没有修改文件,它将保持不变。我最初的想法是这样的:Shell脚本 - 查找今天修改的文件,创建目录,并将它们移动到那里

#!/bin/sh 
cd /path/people/ #this directory has multiple subdirectories 

for i in `ls` 
do 
    if find ./$i -mtime -1 -type f then 
    mkdir ./$i/updated_files 
    #code to copy the files to the newly created directory 
    fi 
done 

然而,这似乎创造所有子目录已最近修改的文件,不只是那些/ updated_files。

回答

3

较重使用find将可能使你的工作变得更容易。类似于

find /path/people -mtime -1 -type f -printf "mkdir --parents %h/updated_files\n" | sort | uniq | sh 
+0

谢谢。此声明适用于创建子文件夹:)如何合并一个声明,将多个最近修改的文件复制到刚创建的文件夹中? **找到**给我一个持有发现文件列表的标志? –

+0

没关系,我想明白了:) –

+0

@Everaldo Aguiar:你能在这里发布解决方案吗? – cili

1

问题是,假设找到命令将失败,如果它什么都没发现。退出代码为零(成功),即使它找不到任何匹配。

喜欢的东西

UPDATEDFILES=`find ./$i -mtime -1 -type f` 
[ -z "$UPDATEDFILES" ] && continue 
mkdir ... 
cp ... 
... 
相关问题