0

指定した月に変更されたファイルを見つけるためのこの小さなスクリプトを作成しました。

私のスクリプトはこの4年間は正常に機能していましたが、最近の更新から、現在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
4

1 に答える 1

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

これで問題なく動作します。

理由がよくわかりません...今のところ...後で理由を検索します...

于 2012-12-11T11:30:53.147 に答える