[英]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.