端末を介した同時フォルダの作成

端末を介した同時フォルダの作成

次のように同時フォルダを作成したいと思いますcrontab。毎週月曜日のタブには新しいフォルダを作成する必要がありますが、数字を追加する必要があります。それ以外の場合は、互いに上書きされます。

この数字は毎週月曜日の日付にすることができます。

--

Week one makes folder:

Monday_01

--

Week two makes folder:

Monday_02

--

Week three makes folder:

Monday_03

--

オンラインでこれに関する情報が見つかりません。

ベストアンサー1

いくつかの可能性があります。 "Monday_"でいっぱいになり続けるディレクトリは、ナビゲートするのが簡単ではないため、次のように設定できます(tmp希望のデフォルトディレクトリに変更)。

 1 0 * * 1 mkdir -p "/tmp/$(date +%Y)/$(date +%A)_$(date +%V)"

だから私は次のような結果を得るでしょう:

 2020/
   Monday_01
   Monday_02
   etc.

ここで、数字は週番号に対応します。これにより、年ごとにカタログを一覧表示でき、数値自体が肯定的な内容を伝えることができます。

次に、最良の方法は、選択した言語でスクリプトを作成し、スクリプト機能を使用して数値を解析して増やすことです。このアプローチは、フォーマットに関連するいくつかの潜在的な問題(累積ディレクトリが> 99に達するとどうなりますか?それで_100になり、標準のソートが汚れ始めるようです)を処理するだけでなく、(おそらく)より良いです。エラー処理を提供します。 。

cron(まあ、そうです)あなたの領域に滞在する必要があるならば、このアプローチはうまくいくでしょう。ただし、スクリプトを作成するよりもエラーチェックが大幅に削減されます。

 val=$(/bin/ls -1rtd /tmp/Monday_* | tail -n1 | cut -d'_' -f2) \
   && printf -v nv "%02d" $((10#$val + 1)) \
   && mkdir "/tmp/Monday_$nv"

これは、最新の 1 つの"Monday_*" ディレクトリを探して ("/tmp" をデフォルトのディレクトリに調整)、下線文字 ("_") に分割し、増分値の書式を指定することによって行われます (再度、一度に何が起こるか発生すべきかどうかは不明)。ディレクトリ何)仕事に来てください。 99)に達してディレクトリを作成します。値(それ以外の場合は8進数として解釈される可能性があります)を10#導入するときに発生する問題を回避する必要があります。0

いくつかの出力例と標準アライメントの不安定性:

/tmp/Monday_01/
/tmp/Monday_02/
/tmp/Monday_03/
/tmp/Monday_04/
/tmp/Monday_05/
/tmp/Monday_06/
/tmp/Monday_07/
/tmp/Monday_08/
/tmp/Monday_09/
/tmp/Monday_10/
/tmp/Monday_100/
/tmp/Monday_101/
/tmp/Monday_102/
/tmp/Monday_103/
/tmp/Monday_104/
/tmp/Monday_105/
/tmp/Monday_106/
/tmp/Monday_107/
/tmp/Monday_108/
/tmp/Monday_109/
/tmp/Monday_11/

この関数は、毎週月曜日の朝の深夜1分後に同じクローン形式(1 0 * * 1)を使用して呼び出されます。


1ここで​​、最新は作成時間として定義されます。要件は毎週月曜日に新しいディレクトリを作成することであるため、最も遅い時間を使用することをお勧めします。前述のように、ファイルが99を超えると、標準の%02ソートが不安定になります(フォーマットを使用する場合)。

おすすめ記事