
하나의 파일을 생성하는 명령이 가능한지 궁금합니다. 그러나 명령이 실행될 때마다 이전 실행에서 생성된 파일을 덮어쓰지 않습니다.
예를 들어, . touch test1.txt
라는 파일 1개를 생성합니다 test1.txt
. 하지만 다음에 실행할 때는 새 파일의 이름을 test2.txt
, 또는 이와 유사한 것으로 지정하고 싶습니다 . 따라서 기존 파일을 덮어쓰지 않고. 어떤 면에서는 문제 없이 여러 번 실행될 수 있습니다.
오해하지 마세요. 하나의 명령으로 여러 파일을 만들려는 것이 아닙니다.
미리 감사드립니다!
답변1
가장 쉬운 해결책은 파일 이름에 타임스탬프를 추가하고 한 자리 숫자를 사용하지 않는 것입니다.
빈 파일을 만드는 가장 쉬운 방법 touch test$(date +%Y%m%d-%H%M%S)
은 test20110802-170410
. 두 번째로 실행하면 test*
더 새로운 타임스탬프를 얻게 되므로 파일이 2개가 됩니다.
답변2
이를 수행하는 일반적인 명령이 존재하는지는 의심스럽지만 다음과 같이 생각할 수 있습니다.
create() {
read prefix number suffix < <(sed -r 's/(.*)([0-9]+)\.(.*)$/\1 \2 \3/' <<<"$1")
while true; do
file="$prefix$number.$suffix"
if [[ -e "$file" ]]; then
((number++))
else
touch "$file"
break
fi
done
}
함수에 대한 입력 매개변수는 접두사, 숫자, 접미사로 분할된 다음 파일이 존재할 때까지 숫자가 증가합니다. 여유 슬롯을 찾았습니다. 파일이 touch
.
분할 메커니즘은 필요에 맞게 조정되어야 하며 다양한 오류 검사가 추가되어야 합니다.
답변3
시퀀스 번호가 필요하지 않은 경우 가장 쉬운 방법은 mktemp
명령을 사용하는 것입니다.