📌
"Bashでランダム文字列を含むファイルを200個生成するスクリプト解説"
#!/bin/bash
# 大文字と小文字のセット
upper_set=("O" "P" "Q" "R" "S" "T" "Y" "U" "V")
lower_set=("o" "p" "q" "r" "s" "t" "u" "v")
# 全組み合わせを生成(正順と反転)
combinations=()
for upper in "${upper_set[@]}"; do
for lower in "${lower_set[@]}"; do
combinations+=("${upper}${lower}")
combinations+=("${lower}${upper}")
done
done
# シャッフル
shuffled_combinations=($(echo "${combinations[@]}" | tr ' ' '\n' | shuf))
# 必要数だけ利用(200個以上が必要な場合は切り詰め)
if [ ${#shuffled_combinations[@]} -lt 200 ]; then
echo "Error: Not enough unique combinations for 200 files."
exit 1
fi
shuffled_combinations=("${shuffled_combinations[@]:0:200}")
# ファイル作成ループ
for i in $(seq -w 1 200); do
# 下二桁の組み合わせを取得
pair=${shuffled_combinations[$((i-1))]}
# ファイル内容を生成
content="${i}${pair}"
# ファイル作成
echo -n "$content" > "${i}.txt"
done
echo "200 files created without duplicate pairs."
短縮コード
#!/bin/bash
upper=("O" "P" "Q" "R" "S" "T" "Y" "U" "V")
lower=("o" "p" "q" "r" "s" "t" "u" "v")
combinations=($(for u in "${upper[@]}"; do for l in "${lower[@]}"; do echo "$u$l" "$l$u"; done; done | shuf))
if [ ${#combinations[@]} -lt 200 ]; then echo "Error: Not enough combinations."; exit 1; fi
for i in $(seq -w 1 200); do echo -n "${i}${combinations[$((i-1))]}" > "${i}.txt"; done
echo "200 files created."
Discussion