2017-09-22 1 views
-1

次のファイルを含むディレクトリを作成します。複数のファイルにタイムスタンプを複数年に渡って、12ヶ月間に実行するにはどうすればよいですか?

test1 test2 test3 ... test4X;ここでXは20未満の数字です

touchコマンドを使用してファイルのタイムスタンプ(日付/時刻)を更新し、複数の年と12カレンダーの月にタイムスタンプを実行しようとしています。

例:test1は2011年1月になります。 test2は2014年2月になります。

以下は私のスクリプトですが、私は複数年と12ヶ月間のタイムスタンプをランダム化できません。あなたも数ヶ月で(あなたはファイルの修正時間を持ちたい場所まで)ご希望の最終年の値に開始年の値を持つように、同じことをしたい場合は、次のあなたの完全な要件について

#!/bin/bash 
clear 
touch -d 2011-01-01 file{1..10} 
ls -lt 

Output: 
-rw-r--r-- 1 Domain Users 0 Jan 1 2011 file10 
-rw-r--r-- 1 Domain Users 0 Jan 1 2011 file1 
-rw-r--r-- 1 Domain Users 0 Jan 1 2011 file2 
-rw-r--r-- 1 Domain Users 0 Jan 1 2011 file3 
-rw-r--r-- 1 Domain Users 0 Jan 1 2011 file4 
-rw-r--r-- 1 Domain Users 0 Jan 1 2011 file5 
-rw-r--r-- 1 Domain Users 0 Jan 1 2011 file6 
-rw-r--r-- 1 Domain Users 0 Jan 1 2011 file7 
-rw-r--r-- 1 Domain Users 0 Jan 1 2011 file8 
-rw-r--r-- 1 Domain Users 0 Jan 1 2011 file9 
+1

{0 .11}月間。行う ...; done' – Aaron

+0

または '{2007..2016}の私のために; -d "$ {i} -01-01"ファイル_ $((i-2006))をタッチします。 {2007..2016}には私のためにランダムな月の 'と' done'があります。 -d "$ {i} - $((ランダムな%12 + 1)) - 01"ファイル_ $((i-2006))をタッチします。 done' –

答えて

0

シーケンス式を使用してfile{1..10}を作成することで問題が発生しているように見えます。これで問題はありませんが、別のシーケンス式を使用して、touchのの文字列を操作しても、各ファイル名の日付の複数の変形を作成することはできません。

これは、複数の年と月に日付スタンプを与えるために日付文字列を操作するためにループ(または単純にRANDOMを使用)を使用できる場所です。

たとえば、20162007から年とランダム月(Jan. - Dec.)、あなたは私がコメント、例えばに投稿されたものに似た何かができるとfile_1 -- file_10を作成します

for i in {2007..2016}; do ## for years 2007 - 2016 
    ## create a file with a random month 
    touch -d "${i}-$((RANDOM % 12 + 1))-01" file_$((i-2006)) 
done 

使用例/出力

$ ls -lrt 
total 0 
-rw-r--r-- 1 david david 0 Mar 1 2007 file_1 
-rw-r--r-- 1 david david 0 Dec 1 2008 file_2 
-rw-r--r-- 1 david david 0 Oct 1 2009 file_3 
-rw-r--r-- 1 david david 0 Mar 1 2010 file_4 
-rw-r--r-- 1 david david 0 Jan 1 2011 file_5 
-rw-r--r-- 1 david david 0 Aug 1 2012 file_6 
-rw-r--r-- 1 david david 0 Mar 1 2013 file_7 
-rw-r--r-- 1 david david 0 Mar 1 2014 file_8 
-rw-r--r-- 1 david david 0 Jul 1 2015 file_9 
-rw-r--r-- 1 david david 0 Dec 1 2016 file_10 

ルック物事を超えるとさらにご質問がある場合は私に知らせてください。

+0

@ David.thank you ..何時に100ファイルを作成する必要があり、2006年から2017年の間にタイムスタンプ?どんなフィードバックも高く評価されます。 – trixie101

+0

私は 'year = 2006; {1..100}の私のために。 do if((i%10 == 0));次に((年++)); fi; touch -d "$ {year} - $((ランダム%12 + 1)) - 01" file_ $ i; done'これは変数 'year'を追加し、10回の反復ごとに' year'を1ずつインクリメントします。 –

0

わかりません同じようにあなたを助けるかもしれません。上記のコード

awk -v var=19 -v start_year="2011" -v end_year="2015" -v start_month="1" -v end_month="12" ' 
BEGIN{ 
    while((4 * var)>val){ 
    print "touch -d " start_year"-"start_month"-1 file"++val; 
    if(start_year==end_year){ 
     start_year="2011" 
} 
    if(start_month==end_month){ 
    start_month="1" 
} 
    start_year++; 
    start_month++ 
} 
}' 

例えばコマンドのみを出力します - 、>touch -d 2013-1-1 file75ので、それらを印刷し、あなたがして、これらのtouchのコマンドを実行するコマンドの最後で| shを使用した結果に満足している一回。

関連する問題