Lặp qua các bảng chữ cái trong Bash


82

Tôi muốn mvtất cả các tệp bắt đầu bằng 'x' vào thư mục 'x'; cái gì đó như:

mv path1/x*.ext path2/x

và làm điều đó cho tất cả các chữ cái trong bảng chữ cái a, ..., z

Làm thế nào tôi có thể viết một tập lệnh bash làm cho 'x' lặp lại qua bảng chữ cái?

Câu trả lời:


139
for x in {a..z}
do
    echo "$x"
    mkdir -p path2/${x}
    mv path1/${x}*.ext path2/${x}
done

1
Cho em hỏi tại sao em lại đóng dấu x với dấu ngoặc nhọn ở dòng thứ 4 và 5 ạ?
Jiaqi Li

Nó không đòi hỏi ở đây nhưng tốt, nó hoạt động, và làm cho thông số nổi bật tốt hơn;) gnu.org/software/bash/manual/...
Kamil Dziedzic

1
Thông thường "$x"là đủ và là cách tốt hơn để làm cho nó nổi bật.
Weijun Zhou

39

Điều này sẽ giúp bạn bắt đầu:

for letter in {a..z} ; do
  echo $letter
done

20

đây là cách tạo bảng chữ cái tiếng Tây Ban Nha bằng cách sử dụng mở rộng dấu ngoặc nhọn lồng nhau

for l in {{a..n},ñ,{o..z}}; do echo $l ; done | nl
1  a
 ...
14  n
15  ñ
16  o
...
27  z

Hoặc đơn giản

echo -e {{a..n},ñ,{o..z}}"\n" | nl

Nếu bạn muốn tạo bảng chữ cái tiếng Tây Ban Nha 29 ký tự lỗi thời

echo -e {{a..c},ch,{d..l},ll,{m,n},ñ,{o..z}}"\n" | nl

Tương tự có thể được thực hiện cho bảng chữ cái tiếng Pháp hoặc bảng chữ cái tiếng Đức.


3

Sử dụng rename:

mkdir -p path2/{a..z}
rename 's|path1/([a-z])(.*)|path2/$1/$1$2' path1/{a..z}*

Nếu bạn muốn loại bỏ ký tự [az] đứng đầu khỏi tên tệp, perlexpr được cập nhật sẽ là:

rename 's|path1/([a-z])(.*)|path2/$1/$2' path1/{a..z}*

2

Với cả chữ hoa

for letter in {{a..z},{A..Z}}; do
  echo $letter
done

1

Câu hỏi này và câu trả lời đã giúp tôi một phần vấn đề của mình.
Tôi cần đọc to một phần của bảng chữ cái trong tiếng bash.

Mặc dù bản mở rộng hoàn toàn là văn bản

Tôi đã tìm thấy một giải pháp: và làm cho nó đơn giản hơn:

START=A
STOP=D
for letter in $(eval echo {$START..$STOP}); do
    echo $letter
done

Kết quả là:

A
B
C
D

Hy vọng nó hữu ích cho ai đó đang tìm kiếm cùng một vấn đề mà tôi phải giải quyết và kết thúc ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.