※ 引述《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
裡面時間部分可以改成 let time++ 會比較快呼叫外部 expr 效率上太慢了.改用 time=$[time+1]也可
我是希望相容 sh, dash :-) (不知道sh有嗎?)
是的,考慮相容性的確得這樣寫。不過你都說 bash 還有一招了 XD
作者:
lantw44 (#######################)
2016-07-11 02:15:00sh 有 time=$(( $time + 1 ))
老實說還真是沒有研究太多純 sh 的語法到底支援到哪層級
POSIX2001的$((...))除了沒有++和--以外應該沒缺其他的
其實我手上 bsd 的 server 我都裝 bash 與 ksh系統安裝好第一件事情,先改成 bash/ksh 當預設 shell不過算是 linux 經驗帶過去了。題外話用 `expr` 計算數值這個效率是真的不好若要重複跑大量的計算,改用其他方式會比較有效率提昇剛測試一下建立1000個檔案,用 expr 與內建計算語法5000 個檔案目錄會分別使用 45sec 與 22sec抱歉,是 5000 個檔案。不過檔案月少時間差距就越小
作者:
danny8376 (釣到一隻猴子@_@)
2016-07-12 16:22:00回樓上 還記得我為了方便連root也改bash結果某次更新系統lib大爆炸 連bash都死的時候整個(ry
作者:
LIAR (玻璃做的大叔)
2016-07-17 09:51:00感謝,版上兩種方法我都會研究,我對相容性高的也有需求