我已经构建了这个小脚本来查找在指定月份修改过的文件。
我的脚本在过去四年中运行良好,但是从最近的更新开始,现在使用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
答案 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
这项工作现在很好!
我不确定为什么......现在......我会在以后寻找原因......