讓每個檔案的修改時間差一秒 - Linux

Table of Contents

※ 引述《LIAR (玻璃做的大叔)》之銘言:
: 我因為windows檔案管理的關係,有時要用檔名,有時要用時間排序,
: 因此新檔案進來後我會先丟到linux裡面用touch調整時間。
: 現在我希望讓大量檔案的mtime只差一秒,我想過
: find *.mp4 -exec touch {} \;
: mtime差距太短
: find *.mp4 -exec sleep 1 && touch {} \;
: 語法執行錯誤,exec後面不能接 && 或是 ; 啊??
: 請問這種有辦法用bash辦到嗎?

檔案多 sleep 你會等超久~~~~

bash 還有一招

time=`date +'%s'`
find /path -name '*.mp4' | while read f
do
touch -d "1970-01-01 00:00:00 ${time}sec GMT" "$f"
time=`expr $time + 1`
done


--

All Comments

Hedy avatarHedy2016-07-12
裡面時間部分可以改成 let time++ 會比較快
呼叫外部 expr 效率上太慢了.改用 time=$[time+1]也可
Tracy avatarTracy2016-07-14
我是希望相容 sh, dash :-) (不知道sh有嗎?)
Dora avatarDora2016-07-17
是的,考慮相容性的確得這樣寫。
Dora avatarDora2016-07-19
不過你都說 bash 還有一招了 XD
Rosalind avatarRosalind2016-07-22
sh 有 time=$(( $time + 1 ))
Iris avatarIris2016-07-22
老實說還真是沒有研究太多純 sh 的語法到底支援到哪層級
Edward Lewis avatarEdward Lewis2016-07-23
POSIX2001的$((...))除了沒有++和--以外應該沒缺其他的
Jessica avatarJessica2016-07-24
其實我手上 bsd 的 server 我都裝 bash 與 ksh
系統安裝好第一件事情,先改成 bash/ksh 當預設 shell
Noah avatarNoah2016-07-25
不過算是 linux 經驗帶過去了。
Genevieve avatarGenevieve2016-07-30
題外話用 `expr` 計算數值這個效率是真的不好
若要重複跑大量的計算,改用其他方式會比較有效率提昇
Quintina avatarQuintina2016-07-31
剛測試一下建立1000個檔案,用 expr 與內建計算語法
Eartha avatarEartha2016-08-02
5000 個檔案目錄會分別使用 45sec 與 22sec
Mia avatarMia2016-08-05
抱歉,是 5000 個檔案。不過檔案月少時間差距就越小
Sandy avatarSandy2016-08-06
回樓上 還記得我為了方便連root也改bash
結果某次更新系統lib大爆炸 連bash都死的時候整個(ry
Adele avatarAdele2016-08-07
感謝,版上兩種方法我都會研究,我對相容性高的也有需求