폴더 이름이 다음과 같은 폴더가 있습니다.
enum_1 enum_118 enum_140 enum_16 enum_178 enum_209 enum_227 enum_246 enum_27 enum_45 enum_63 enum_88
enum_10 enum_119 enum_141 enum_160 enum_179 enum_21 enum_228 enum_247 enum_28 enum_46 enum_64 enum_9
enum_100 enum_12 enum_142 enum_161 enum_18 enum_210 enum_229 enum_248 enum_29 enum_47 enum_65 enum_90
enum_102 enum_120 enum_143 enum_162 enum_180 enum_211 enum_23 enum_249 enum_3 enum_48 enum_66 enum_91
enum_103 enum_121 enum_144 enum_163 enum_181 enum_212 enum_230 enum_25 enum_30 enum_49 enum_67 enum_92
enum_104 enum_122 enum_145 enum_164 enum_182 enum_213 enum_231 enum_250 enum_31 enum_5 enum_68 enum_93
enum_105 enum_123 enum_146 enum_165 enum_183 enum_214 enum_232 enum_251 enum_32 enum_50 enum_69 enum_94
enum_106 enum_124 enum_147 enum_166 enum_184 enum_215 enum_233 enum_252 enum_33 enum_51 enum_7 enum_95
enum_107 enum_125 enum_149 enum_167 enum_185 enum_216 enum_234 enum_253 enum_34 enum_52 enum_70 enum_96
enum_108 enum_126 enum_15 enum_168 enum_186 enum_217 enum_235 enum_254 enum_35 enum_53 enum_71 enum_98
enum_109 enum_127 enum_150 enum_169 enum_187 enum_218 enum_236 enum_255 enum_36 enum_54 enum_72 enum_99
나는 그들 모두의 이름을 바꾸고 싶습니다.
enum_00001 enum_00118 ...
어떻게 달성해야 합니까? 감사합니다.
답변1
printf
루프에서 이름의 숫자 부분 형식을 적절하게 지정하는 데 사용합니다 .
for name in enum_*; do
mv -i -- "$name" "$( printf 'enum_%05d' "${name#*_}" )"
done
는 ${name#*_}
원래 이름의 숫자 부분으로 확장됩니다. 즉, 73
for ( 이름의 enum_73
첫 번째 항목까지 모든 것을 제거함 )입니다. _
형식 enum_%05d
지정 문자열은 이 정수의 형식을 지정하여 접두사가 0으로 채워진 5자리 숫자가 됩니다 enum_
. 즉 enum_00073
, .
답변2
펄을 사용하면 rename
:
prename 's/(\d+)/sprintf "%05d", $1/e' enum_*
답변3
또 다른세게 때리다변화:
#!/bin/bash
for fname in enum_*
do
IFS=_ read n d <<< $fname # splitting file name by separator `_`
mv "$fname" "$(printf '%s_%05d' $n $d)"
done