这是我的代码,直到现在。我使用“find”和mtime来反复查找修改过的文件列表。
baseFile=$1;
mtime=$2;
outputmode=$3;
if [ $outputmode = 1 ]
then
find $1/ -type f -mtime $2 | ls -lh
fi
if [ $outputmode = 2 ]
then
echo $USER
find $1/ -type f -mtime $2 | wc -l
fi
该程序在执行期间接受输入。语法是./filename.sh param1 param2 param3
param1-必须在其中找到修改过的文件的目录路径。
param2-“mtime”参数的值
param3 - 接受2个值
值1输出应该是这样的(摘要模式)
Owner Number of files changes
sh 3
值2 out应该是这样的(详细模式)
sh
w------- 1 sh sh 1998 Feb 8 20:30 a.m
-rw-rw-r-- 1 sh sh 45000 Feb 8 20:29 a.txt
-rw-rw-r-- 1 sh sh 45000 Feb 8 20:29 b.txt
$ 1用于参数1,$ 2用于参数2。
摘要和详细模式基于第3个参数,如$ 3所示
我的代码只打印修改后的文件以及给定特定目录中的文件总数。 至于详细模式,我的代码只打印目录,但我只需要打印修改过的文件 对此有任何帮助将不胜感激。
答案 0 :(得分:0)
ls
从参数列表中获取文件名参数,而不是标准输入。您可以使用xargs
将标准输入转换为参数
find "$baseFile"/ -type f -mtime "$mtime" -print0 | xargs -0 ls -lh
-print0
和-0
选项一起工作以确保即使文件名具有空格(否则会将它们视为多个参数),这种方法也能正常工作。
或者您可以使用-exec
选项:
find "$baseFile"/ -type f -mtime "$mtime" -exec ls -lh {} +