Bash脚本用于在摘要和详细模式下打印修改的文件?

时间:2015-02-10 02:27:23

标签: linux bash

这是我的代码,直到现在。我使用“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所示

我的代码只打印修改后的文件以及给定特定目录中的文件总数。 至于详细模式,我的代码只打印目录,但我只需要打印修改过的文件 对此有任何帮助将不胜感激。

1 个答案:

答案 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 {} +