bashスクリプトを使用し、日付をファイル名として使用して複数のtarファイルを作成する方法は?

bashスクリプトを使用し、日付をファイル名として使用して複数のtarファイルを作成する方法は?

ファイルが多く、100ファイルごとにアーカイブを作成したいと思います。つまり、最初の100ファイルは1つのtarファイルにあり、101番目から200番目のファイルは別のtarファイルにあります。 tar名で日付(ナノ秒)を使いたいです。

私は次のようなものがあります:

( cd "${SOURCE_DIR}" && find . -type f -name "${FILE_GLOB}" ) | 
  xargs -n 100 | xargs -I % sh -c '{tar -C "${SOURCE_DIR}" --files-from - % -cf "${DESTINATION_DIR}/$(date '+%Y%m%d%H%M%S%N')-$(uname -n).tar~"}'

今の問題は、日付書式文字列の '%'がxargs私が望んでいない引数を受け入れることです。

これが起こらないようにするにはどうすればよいですか?

ベストアンサー1

明らかに代わりに別の記号を使用してください%

たとえば、次のように-I @なります。

( cd "${SOURCE_DIR}" && find . -type f -name "${FILE_GLOB}" ) | 
  xargs -n 100 | xargs -I @ sh -c '{tar -C "${SOURCE_DIR}" --files-from - @ -cf "${DESTINATION_DIR}/$(date '+%Y%m%d%H%M%S%N')-$(uname -n).tar~"}' 

おすすめ記事