문제

파일 1, file2에서 파일을 호출하는 파일을 만들어야합니다.

나는 다음과 같은 성공을 시도했다

cat test > {File1 .. File99}

단어 파일이없는 명령은 작동하지 않았습니다.

도움이 되었습니까?

해결책

단 하나의 명령 :

touch File{1..99}

다른 팁

$ for i in {1..100}; do touch "File$i"; done 

이것은 사용중인 쉘에 따라 다릅니다. 나는 당신이 bash를 사용하고 있다고 가정합니다.

에 따르면 http://www.gnu.org/software/bash/manual/bashref.html#brace-expansion, Bash는 숫자와 단일 문자를 확장합니다. 그래서 당신의 브레이스 표현은 다음과 같아야합니다.

File{1..99}

그러나 리디렉션 연산자 ">"가 여러 파일로 출력 할 수 있다고 생각하지 않습니다. 루프를 사용해야 할 수도 있습니다.

for output in File{1..99}
do
    cat test > $output
done

또는 한 라이너로서 :

for output in File{1..99}; do cat test > $output; done

비 루핑 버전을 선호하는 경우 Tee를 사용할 수 있습니다.

cat test | tee File{1..99} > /dev/null

와 함께 ZSH (그와 함께 mult_ios) 당신은 할 수 있습니다 :)

% zsh -c 'print test > file{1..3}' 
% head file*                      
==> file1 <==
test

==> file2 <==
test

==> file3 <==
test

파일이 올바르게 정렬되도록하려면 (File01, File02 ... File10 등) 다음을 수행하십시오.

for i in {0..10}; do i="0"$i; touch file${i: -2}; done

이것은 다음과 같습니다.

for i in {0..10}
do
    i="0"$i
    touch file${i: -2} # or cat file > file${i: -2}
done

기판 확장 조항에는 결장과 대시 사이에 공간이 있어야합니다. "File01"으로 시작하려면 위의 범위를 1로 시작할 수 있습니다.

또는 주요 0을 갖는 훨씬 간결한 방법 :

touch file{0..9}{0..9}

그리고 이것과 함께 Phyrex1an의 기술을 사용합니다.

cat test | tee File{0..9}{0..9} > /dev/null

이것은 하나의 추가 파일 "file00"을 만듭니다. "file39"를 통해 "file20"에 대해 "{2..3} {0..9}" "숫자 (두 번째 범위)를 변경하면 시퀀스의 일부가 건너 뛸 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top