我有很多文件,想要为每 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~"}'