我想知道是否有一种简单而简洁的方法来编写一个shell脚本,该脚本将通过一系列目录,( ie ,一个类中的每个学生一个),确定是否在该目录中有任何文件在最后一天内被修改,只有在这种情况下,脚本才会创建一个子目录并将文件复制到那里。因此,如果目录在过去24小时内没有修改过任何文件,那么它将保持不变。我最初的想法是:
#!/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,而不仅仅是那些最近修改过文件的子目录。
答案 0 :(得分:3)
更find
的使用可能会让您的工作变得更轻松。像
find /path/people -mtime -1 -type f -printf "mkdir --parents %h/updated_files\n" | sort | uniq | sh
答案 1 :(得分:1)
问题是您假设 find 命令在找不到任何内容时将失败。退出代码为零(成功),即使它找不到匹配的内容。
像
这样的东西UPDATEDFILES=`find ./$i -mtime -1 -type f`
[ -z "$UPDATEDFILES" ] && continue
mkdir ...
cp ...
...