たくさんのファイルがあり、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
からの引数を受け入れることですが、これは望ましくありません。
どうすればこれを防ぐことができますか?
明らかに、%
の代わりに別の記号を使用してください。
たとえば、-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~"}'