Command-Line
觸摸命令參數的執行順序
我有一個以空格分隔的文件列表,我想使用該
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
為命令提供參數不能保證執行順序嗎?如果沒有,我如何按特定順序更新這些文件的時間戳?
在沒有指定
touch
時間的情況下,將其所有參數的時間戳更改為每個文件被觸摸時的目前時間,這應該為每個文件生成不同的時間戳,但在許多情況下,這最終會對其所有參數應用相同的時間戳;stat
您可以通過在所有接觸的文件上執行來驗證這一點。它們按照命令行上指定的順序進行處理。為了得到你想要的結果,你需要
touch
單獨循環和每個文件,有一些延遲:for file in {1..12}.txt; do touch $file; sleep 0.1; done
(或多或少的延遲取決於底層文件系統的時間戳解析度)。
請注意,
ls -t
列出的文件按時間戳降序排列;看到你需要使用的次數越來越多ls -rt
。