我正在尝试使用 adb shell 设置 Android 设备上一堆文件的时间戳。
由于某种原因或另一种原因,使用特定提供的时间戳运行触摸不起作用。此外,文件通配在使用触摸的 android busybox shell 上不起作用。
因此,我求助于 shell 脚本,对文件夹中的所有文件运行 touch 命令。
for file in `ls`; do touch "$file"; done
问题是它不以任何特定顺序运行命令,当我希望它以相反的字母顺序运行并保证它将连续完成时,使得 a.png 时间戳始终晚于 b.png 。
这可能吗?
答案1
您可以使用触摸来设置未来的时间。
T=$(date +%s)
for file in $(ls | sort -r); do
touch -t $(date '+%Y%m%d%H%I.%S' --date="@$T") $file
let T=$T+1
done
sort
如果设备上缺失,请确保已busybox
安装。
答案2
这可能吗?
是的,也不是。不具有高性能。症结在于您指定“a.png 时间戳始终是之后时间比 b.png“,我想这与某些 Makefile 如何处理它们有关。如果您的文件系统仅将 CTIME 标记保留为一秒分辨率,则会出现问题。所以我建议这样做:
for file in `ls | sort -r`; do touch "$file"; sleep 1; done
是的,我知道,这sleep
太恶心了。但这可能正是您需要进行make
可预测的操作。