[bash] Bash에서 알파벳 반복

mv‘x’로 시작 하는 모든 파일을 ‘x’디렉토리에 저장 하고 싶습니다 . 같은 것 :

mv path1/x*.ext path2/x

모든 알파벳 문자 a, …, z에 대해 수행하십시오.

알파벳을 통해 ‘x’루프를 만드는 bash 스크립트를 어떻게 작성할 수 있습니까?



답변

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

프랑스어 알파벳이나 독일어 알파벳도 비슷합니다.


답변

사용 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}*


답변

대문자로도

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


답변

이 질문과 답변은 부분적으로 내 문제에 도움이되었습니다. bash 에서 알파벳일부
확대 해야했습니다 .

확장 은 엄격하게 텍스트 이지만

해결책을 찾았고 더 간단하게 만들었습니다.

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

결과 :

A
B
C
D

내가 해결해야했던 동일한 문제를 찾는 사람에게 도움이되기를 바라며 여기에서도 끝납니다.


답변