Đơn giản như thế này.
(bash)
for i in * ; do mv -- "$i" "${i:0:5}" ; done
Voila.
Và một lời giải thích từ Hướng dẫn Bash-Scripting nâng cao ( Chương 10. Thao tác biến ) , (có thêm NOTEdòng nội tuyến để làm nổi bật các lỗi trong hướng dẫn sử dụng đó):
Khai thác chuỗi con
${string:position}
Trích xuất chuỗi con từ $string
tại $position
.
Nếu $string
tham số là "*" hoặc "@", thì điều này trích xuất các tham số vị trí, bắt đầu từ $position
.
${string:position:length}
Trích xuất các $length
ký tự của chuỗi con từ $string
tại $position
.
NOTEthiếu dấu ngoặc kép xung quanh mở rộng tham số! echo
không nên được sử dụng cho dữ liệu tùy ý.
stringZ=abcABC123ABCabc
# 0123456789.....
# 0-based indexing.
echo ${stringZ:0} # abcABC123ABCabc
echo ${stringZ:1} # bcABC123ABCabc
echo ${stringZ:7} # 23ABCabc
echo ${stringZ:7:3} # 23A
# Three characters of substring.
# Is it possible to index from the right end of the string?
echo ${stringZ:-4} # abcABC123ABCabc
# Defaults to full string, as in ${parameter:-default}.
# However . . .
echo ${stringZ:(-4)} # Cabc
echo ${stringZ: -4} # Cabc
# Now, it works.
# Parentheses or added space "escape" the position parameter.
Các đối số vị trí và độ dài có thể được "tham số hóa", nghĩa là, được biểu diễn dưới dạng một biến, thay vì là hằng số.
Nếu $string
tham số là "*" hoặc "@", thì $length
tham số này trích xuất tối đa các tham số vị trí, bắt đầu từ $position
.
echo ${*:2} # Echoes second and following positional parameters.
echo ${@:2} # Same as above.
echo ${*:2:3} # Echoes three positional parameters, starting at second.
NOTE: expr substr
là phần mở rộng GNU.
expr substr $string $position $length
Trích xuất các $length
ký tự từ $string
bắt đầu tại $position
.
stringZ=abcABC123ABCabc
# 123456789......
# 1-based indexing.
echo `expr substr $stringZ 1 2` # ab
echo `expr substr $stringZ 4 3` # ABC
NOTE: Điều đó echo
là dư thừa và làm cho nó thậm chí ít đáng tin cậy hơn. Sử dụng expr substr + "$string1" 1 2
.
NOTE: expr
sẽ trở lại với trạng thái thoát khác không nếu đầu ra là 0 (hoặc -0, 00 ...).
BTW. Cuốn sách có mặt trong kho Ubuntu chính thức như abs-guide
.
bash
thẻ nếu bạn đang yêu cầu mộtsh
giải pháp?