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~"}' 

관련 정보