2011-09-04 39 views
53

Tôi muốn mv tất cả các tệp bắt đầu bằng 'x' vào thư mục 'x'; cái gì đó như:Lặp qua bảng chữ cái trong Bash

mv path1/x*.ext path2/x 

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

Làm thế nào tôi có thể viết một kịch bản bash mà làm 'x' vòng qua bảng chữ cái?

Trả lời

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

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

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

dưới đây là cách để tạo ra bảng chữ cái tiếng Tây Ban Nha sử dụng mở rộng cú đúp 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 là

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

Nếu bạn muốn để tạo ra obsolete 29 ký tự bảng chữ cái tiếng Tây Ban Nha

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.

2

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 dải-off hàng đầu [a-z] nhân vật từ tên tập tin, các perlexpr cập nhật sẽ là:

rename 's|path1/([a-z])(.*)|path2/$1/$2' path1/{a..z}* 
Các vấn đề liên quan