アルファベット順にスクリプトからコマンドを実行する

アルファベット順にスクリプトからコマンドを実行する

私はadbシェルを使ってAndroidデバイス上の複数のファイルにタイムスタンプを設定したいと思います。

何らかの理由で指定された特定のタイムスタンプを使用してタッチを実行しても機能しません。また、タッチを使用するAndroid busyboxシェルではファイルグロービングは機能しません。

そのため、フォルダ内のすべてのファイルに対して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がそれを処理する方法に関連しているようです。

for file in `ls | sort -r`; do touch "$file"; sleep 1; done

はい、わかりました。sleep逆になります。ただし、これはmake予測可能な方法で実行する必要がある作業です。

関連情報