如何使用 bash 脚本创建多个 tar 文件并使用日期作为文件名?

如何使用 bash 脚本创建多个 tar 文件并使用日期作为文件名?

我有很多文件,想要为每 100 个文件创建一个存档,即前 100 个文件位于一个 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~"}' 

相关内容