このコマンドを並列性を使用しないコマンドに変換しようとしています。
find . -type f -iregex '.*.ts\|.*.js\|.*.tsx\|.*.jsx' | parallel 'touch {} -d "$(date -d \@$((0x$(md5sum {} | cut -b 1-7))))"'
私が思いついたことはうまくいきません。
find . -type f -iregex '.*.ts\|.*.js\|.*.tsx\|.*.jsx' -print0 | xargs -0 md5sum | cut -b 1-7 | xargs -0 -I {} touch -d \@0x{}
私が達成したいのは、キャッシュの目的でファイルのmtimeをmd5sumに設定することです。
答え1
スクリプトを変換する理由を書いていません。おそらく、スクリプトがGNU Parallelに依存しないことを望むかもしれません。
この場合、parallel --embed
GNU Parallelをシェルスクリプトに含めることに興味があるかもしれません。
parallel --embed > newscript
次に端を編集しますnewscript
。
newscript
その後、GNU Parallelがインストールされていないコンピュータで使用できます。
--embed
バージョン20180322から利用可能です。
答え2
xargs
GNUとの違いは、parallel
コマンド構造を基本的に変更する必要があるほど大きくはありません。これ
探す。<検索パラメータ>-print 0 | xargs -0 -L 1 sh -c 'touch "$1" -d "$(date -d @$(( 0x$(md5sum "$1" | cut -b 1-7) )) )"' シャック働く
また、私のシステムでは使用する必要がないため、処理することもできます
date -d
。 touch
-d @number
探す。<検索パラメータ>-print 0 | xargs -0 -L 1 sh -c 'touch "$1" -d "@$(( 0x$(md5sum "$1" | cut -b 1-7) ))"' sh