연속된 파일 복사

연속된 파일 복사

, 등이라는 이름의 12개 파일이 까지 있습니다 dmp_000. 번호가 매겨진 파일의 일관성을 유지하기 위해 해당 파일을 모두 , 등 으로 복사하고 싶습니다 . 혼자 하지 않고도 쉽게 할 수 있는 방법이 있을 텐데요?dmp_001dmp_011rdmp_000rdmp_001

답변1

이 명령을 사용하여 일부 샘플 데이터를 생성합니다.

% for  i in `seq 0 11`;do touch dmp_$(printf "%03d" $i);done

% ls
dmp_000  dmp_001  dmp_002  dmp_003  dmp_004  dmp_005  dmp_006  dmp_007  dmp_008  dmp_009  dmp_010  dmp_011

파일을 복사하고 원본 파일 수정/생성 날짜를 유지하려면:

% for i in dmp*;do cp -p "$i" "r${i}";done

% ls
dmp_000  dmp_002  dmp_004  dmp_006  dmp_008  dmp_010  rdmp_000  rdmp_002  rdmp_004  rdmp_006  rdmp_008  rdmp_010
dmp_001  dmp_003  dmp_005  dmp_007  dmp_009  dmp_011  rdmp_001  rdmp_003  rdmp_005  rdmp_007  rdmp_009  rdmp_011

파일 wdmp*를 rdmp*로 이동

% for i in wdmp*;do newname=$(echo $i|sed 's/^w/r/'); mv "$i" "$newname";done

노트: 당신은 또한 사용할 수 있습니다@warl0ck의 답변이렇게 하려면 다음 rename명령을 사용하십시오.

답변2

사용이 zsh허용되는 경우:

autoload -U zmv            # load zmv
zmv -C 'dmp_(*)' 'rdmp_$1' # rename files

또는 이 경우에는 간단히 다음과 같습니다.

zmv -C 'dmp_*' 'r$f'

( $1, $2해당 (...)그룹 및 $f전체 파일 경로로 확장됩니다.)

바라보다이 링크더 많은 예시를 알아보세요.

답변3

Posix 호환 가능, 짧게 확장하려는 경우 모든 파일을 위치 인수 1-12(괄호 안)로 참조할 수 있습니다.

% ( set -- wdmp0[0-1][0-9] ;\
> for f ; do cp $f r${f#?} ; done )

답변4

명령 이름을 바꾸고 dmp_,

rename dmp rdmp dmp_*

파일을 보존하려면 다음과 같은 대안을 시도해 보십시오.

for x in dmp_*; do cp $x r$x; done

관련 정보