순서를 나타내기 위해 시작 부분에 두 개의 숫자를 추가하여 생성 시간에 따라 이름을 바꿔야 하는 파일 세트가 있습니다.
예를 들어 다음과 같은 파일이 있습니다.
Filename Creation time
api.c 00:15
helloworld.h 00:05
ubuntu.iso 00:10
이름을 바꾼 후 파일 이름은 다음과 같아야 합니다.
01_helloworld.h
02_ubuntu.iso
03_api.c
어떻게 해야 하나요?
답변1
이는 또한 bash
파이프 입구가 적다고 가정합니다.
ls -tr
문서 인쇄가장 오래된 수정 사항먼저, 다른 사람들은 창작 시기에 대해 논평했습니다.
a=0, ls -tr | while read line; do printf "%s \'%s\' \'%03d_%s\'\n" mv "$line" $((a=a + 1)) "$line"; done|less
답변2
그리고 zsh
:
( autoload zmv
set -- *(.Om)
pad=${#${#}}
zmv -n -Q '*(.Om)' '${(l:${pad}::0:)$((++i))}_$f' )
먼저 파일 수를 가져온 다음( flags 를 통해 제로 패딩 길이를 계산할 수 있음 l
), 일반 파일만 선택하고 로 제거하는 glob 한정자를 활용하기 위해 zmv
with 를 사용하여 파일 이름을 바꿉니다 .-Q
.Om
mtime
-n
시운전Switch) 결과에 만족한다면.