按字母顺序在脚本上运行命令

按字母顺序在脚本上运行命令

我正在尝试使用 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可预测的操作。

相关内容