Re: [问题] 让每个档案的修改时间差一秒

楼主: newversion (海纳百川)   2016-07-11 01:34:05
※ 引述《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
作者: kenduest (小州)   2016-07-11 01:38:00
里面时间部分可以改成 let time++ 会比较快呼叫外部 expr 效率上太慢了.改用 time=$[time+1]也可
楼主: newversion (海纳百川)   2016-07-11 01:39:00
我是希望相容 sh, dash :-) (不知道sh有吗?)
作者: kenduest (小州)   2016-07-11 01:46:00
是的,考虑相容性的确得这样写。不过你都说 bash 还有一招了 XD
作者: lantw44 (#######################)   2016-07-11 02:15:00
sh 有 time=$(( $time + 1 ))
作者: kenduest (小州)   2016-07-11 03:14:00
老实说还真是没有研究太多纯 sh 的语法到底支援到哪层级
作者: kerwinhui (kezza)   2016-07-11 12:02:00
POSIX2001的$((...))除了没有++和--以外应该没缺其他的
作者: kenduest (小州)   2016-07-11 19:10:00
其实我手上 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
感谢,版上两种方法我都会研究,我对相容性高的也有需求

Links booklink

Contact Us: admin [ a t ] ucptt.com