0

次のようにスタンプされたディレクトリ内のログファイルを指定します。

log_from_2012_08_14-11:57:21_To_2012_09_14-11:56:12.zip
log_from_2012_10_14-11:57:21_To_2012_11_14-11:56:12.zip

そして、このようなファイルが約 155450 個あることを考えると、次のことを簡単または効率的な方法で行うにはどうすればよいでしょうか。

logrotate または別のツールを使用して、各月のフォルダーを作成します。たとえば、mkdir $currentMont = october に、2012 年 10 月のすべてのファイルをそこに配置します。

4

1 に答える 1

1

いくつかのforループがネストされたbashスクリプトでうまくいくようです。

何かのようなもの:

for year in $(seq -f "%02g" 0 20); do
    for month in $(seq -f "%02g" 0 12); do
        dest = "20${year}-${month}"
        mkdir "$dest"
        mv "log_from_${dest}*" "${dest}";
    done;
done;

明らかに、これをニーズに合わせて微調整する必要があります。1つのディレクトリにファイルが多すぎると、行グロブの制限に達する可能性があります。その場合はfind . | xargs mv、その問題を回避するために使用する必要があります。

于 2012-10-29T20:23:22.697 に答える