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