簡體   English   中英

在 Bash 中循環字母

[英]Looping through alphabets in Bash

我想將所有以“x”開頭的文件mv到目錄“x”; 就像是:

mv path1/x*.ext path2/x

並對所有字母 a, ..., z 執行此操作

我怎樣才能編寫一個 bash 腳本來讓 'x' 在字母表中循環?

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

這應該讓你開始:

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

這是使用嵌套括號擴展生成西班牙字母表的方法

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

或者干脆

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

如果要生成過時的29 個字符的西班牙字母表

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

對法語字母或德語字母也可以進行類似的操作。

也有大寫

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

使用rename

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

如果您想從文件名中去除前導 [az] 字符,更新后的 perlexpr 將是:

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

這個問題和答案部分地幫助了我解決我的問題。
我需要在 bash 中放大部分字母表

雖然擴展是嚴格的文本

我找到了一個解決方案:並使它更簡單:

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

結果是:

A
B
C
D

希望它對尋找我必須解決的相同問題的人有所幫助,並且最終也在這里

循環使用字母表我希望這會有所幫助。

因為我在 {a..z}

因為我在 {A..Z}

對於 i 在 {{a..z},{A..Z}}

根據需要使用循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM