タッチコマンドパラメータの実行順序

タッチコマンドパラメータの実行順序

スペースで区切られたファイルのリストがあり、touchこのコマンドを使用してそのタイムスタンプを順次更新したいと思います。ただし、ファイル名をパラメータとして指定すると、タイムスタンプは異なる順序で更新されます。

touch 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt 10.txt 11.txt 12.txt 

上記のコマンドを実行して実行した後ls -t(修正時間でソート)、次のようになります。

1.txt 10.txt 11.txt 12.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt

コマンドに引数を指定すると、実行順序は保証されませんか?そうでない場合、これらのファイルのタイムスタンプを特定の順序でどのように更新できますか?

ベストアンサー1

時間を指定しないと、touch各ファイルをタッチするとすべてのパラメータのタイムスタンプが現在の時刻に変わります。これにより、ファイルごとに異なるタイムスタンプが生成されますが、ほとんどの場合、これはすべてのパラメータに適用されます。同じタイムスタンプを使用できます。stat連絡されたすべてのファイルを実行して確認します。コマンドラインで指定された順序で処理されます。

必要な結果を得るには、touch少し遅れて各ファイルを個別に繰り返す必要があります。

for file in {1..12}.txt; do touch $file; sleep 0.1; done

(待機時間は、基本ファイルシステムのタイムスタンプ確認に依存します。)

リストされたファイルはls -tタイムスタンプに基づいて降順にソートされているため、確認する回数が増えますls -rt

おすすめ記事