查找在指定月份内修改的文件

时间:2012-12-11 11:00:26

标签: bash find xargs

我已经构建了这个小脚本来查找在指定月份修改过的文件。

我的脚本在过去四年中运行良好,但是从最近的更新开始,现在使用bash V4,这将不再适用,我不明白为什么。

有脚本(fmonth.sh):

#!/bin/sh

month=$1
shift

printf "now\n%s-01\n%s-01 00:00 +1 month\n" $month $month |
    date -f - +%s |
    xargs printf "n=%s/60-.5;s=%s/60;e=%s/60;n-s;if (n-e <0) 0 else n-e\n" |
    bc -l |
    xargs printf "find $@ -mmin -%.0f -mmin +%.0f -print0\n" |
    sh |
    xargs -0 /bin/ls -ltrd |
    less -S

这可以通过以下方式使用:

fmonth.sh 2012-09 /etc /home/user /root /var/lib

1 个答案:

答案 0 :(得分:0)

好的,我找到了答案:$@可以替换为$*

#!/bin/sh

month=$1
shift

printf "now\n%s-01\n%s-01 00:00 +1 month\n" $month $month |
    date -f - +%s |
    xargs printf "n=%s/60-.5;s=%s/60;e=%s/60;n-s;if (n-e <0) 0 else n-e\n" |
    bc -l |
    xargs printf "find $* -mmin -%.0f -mmin +%.0f -print0\n" |
    sh |
    xargs -0 /bin/ls -ltrd |
    less -S

这项工作现在很好!

我不确定为什么......现在......我会在以后寻找原因......