이 시도:
for file in file{18..31}.txt
"시퀀스 표현식"으로 알려져 있으며 Bash의 중괄호 확장 기능 의 일부입니다 . Bash 3과 4에서 작동합니다.
증가 기능은 Bash 4의 새로운 기능입니다. Bash 3.x가있을 수 있습니다.
Bash 4에서는 다음을 수행 할 수 있습니다.
$ for i in {1..6..2}; do echo $i; done
1
3
5
그러나 Bash 3에서는 동일한 결과를 얻으려면이 작업을 수행해야합니다.
$ for ((i=1; i<=6; i+=2)); do echo $i; done
1 씩 증가하는 동일한 양식 :
$ for ((i=1; i<=6; i++)); do echo $i; done
숫자는 변수 또는 표현식 일 수 있습니다. 그러나 시퀀스 표현식에서 숫자는 상수 여야합니다.
다음은 파일에서 해당 양식을 사용하는 예입니다.
for ((i=18; i<=31; i++))
do
echo "file${i}.txt"
done
Bash 4에서 시퀀스 표현식의 또 다른 새로운 기능은 선행 0을 포함하는 기능입니다. 적절하게 정렬 할 수있는 번호가 매겨진 파일을 만들고 사용하려는 경우에 유용합니다.
배쉬 4에서 :
touch file{001..010}.txt
"file010.txt"를 통해 "file001.txt"라는 파일을 생성합니다. 그들의 이름은 예상 순서대로 정렬됩니다. 앞에 0이 없으면 "file10.txt"가 "file1.txt"보다 먼저 정렬됩니다.
파일로 작업하기 위해 동일한 선행 0 구문을 사용할 수 있습니다.
for file in file{001..010}.txt; do echo "$file"; done
Bash 3에서 선행 0이 필요한 경우 값을 직접 입력해야합니다.
for i in {1..10}
do
printf -v i '%03d' $i
echo "file${i}.txt"
done
이 printf
명령문은 i 값 앞에 0을 추가하여 너비가 3이되도록합니다 (예 : "4"는 "004"가 됨).
편집하다:
파일 이름에 공백을 넣는 것은 간단합니다.
$ touch "space name "{008..018..3}" more spaces"
$ ls -l sp*
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000008 more spaces
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000011 more spaces
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000014 more spaces
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000017 more spaces
$ for f in "space name "{008..018..3}" more spaces"; do mv "$f" "${f}.txt"; done
$ ls -l sp*
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000008 more spaces.txt
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000011 more spaces.txt
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000014 more spaces.txt
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000017 more spaces.txt
for
xargs를 사용하여 파일 이름에 공백을 허용 하는 루프를 사용하는 솔루션을 포함하도록 질문을 업데이트했습니다 . bash 4가 없으면 작동하는 것 같습니다. bash 4가 있으면 괄호 확장을 사용하십시오! 선택한 답변을 참조하십시오. Snow Leopard bash를 업그레이드하기위한