看板 Linux 關於我們 聯絡資訊
※ 引述《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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.150.169.155 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1468172048.A.8FF.html
kenduest: 裡面時間部分可以改成 let time++ 會比較快 07/11 01:38
kenduest: 呼叫外部 expr 效率上太慢了.改用 time=$[time+1]也可 07/11 01:38
newversion: 我是希望相容 sh, dash :-) (不知道sh有嗎?) 07/11 01:39
kenduest: 是的,考慮相容性的確得這樣寫。 07/11 01:46
kenduest: 不過你都說 bash 還有一招了 XD 07/11 01:48
lantw44: sh 有 time=$(( $time + 1 )) 07/11 02:15
kenduest: 老實說還真是沒有研究太多純 sh 的語法到底支援到哪層級 07/11 03:14
kerwinhui: POSIX2001的$((...))除了沒有++和--以外應該沒缺其他的 07/11 12:02
玩BSD就得被迫用純sh寫 bash的好處是多功能,又能向下相容 要寫跨平台的script 所以考慮相容性比較好^^ ※ 編輯: newversion (118.150.169.155), 07/11/2016 16:13:31
kenduest: 其實我手上 bsd 的 server 我都裝 bash 與 ksh 07/11 19:10
kenduest: 系統安裝好第一件事情,先改成 bash/ksh 當預設 shell 07/11 19:10
kenduest: 不過算是 linux 經驗帶過去了。 07/11 19:11
kenduest: 題外話用 `expr` 計算數值這個效率是真的不好 07/11 19:13
kenduest: 若要重複跑大量的計算,改用其他方式會比較有效率提昇 07/11 19:13
kenduest: 剛測試一下建立1000個檔案,用 expr 與內建計算語法 07/11 19:16
kenduest: 5000 個檔案目錄會分別使用 45sec 與 22sec 07/11 19:19
kenduest: 抱歉,是 5000 個檔案。不過檔案月少時間差距就越小 07/11 19:20
danny8376: 回樓上 還記得我為了方便連root也改bash 07/12 16:22
danny8376: 結果某次更新系統lib大爆炸 連bash都死的時候整個(ry 07/12 16:22
LIAR: 感謝,版上兩種方法我都會研究,我對相容性高的也有需求 07/17 09:51