예 : 파일 이름 : ENSG00000000003
ENSG00000000003 43120.829491094
ENSG00000000005 39604.4956791524
ENSG00000000419 7645.05624570546
ENSG00000000457 2157.49855156382
ENSG00000000460 3317.98417717746
ENSG00000000938 6327.40515535397
예상 출력; 이상적으로는 파일 이름 앞에 탭이 있습니다.
ENSG00000000003
ENSG00000000003 43120.829491094
ENSG00000000005 39604.4956791524
ENSG00000000419 7645.05624570546
ENSG00000000457 2157.49855156382
ENSG00000000460 3317.98417717746
ENSG00000000938 6327.40515535397
45000 개의 파일을 함께 루프에서 수행하고 싶습니다.
표준 UNIX 편집기 ( 물론! )를 사용합니다.
for f in ENSG*
do
printf '1i\n\t%s\n.\nw\nq\n' "$f" | ed -s "$f"
done
이것은 명령의 작은 스크립트를에 전송합니다 ed
.
i
) 텍스트를 삽입 하십시오. 텍스트는 printf
탭 ( \t
)이 앞에있는 파일 이름으로 전달됩니다..
)를 삽입 한 후 파일을 디스크에 저장 ( w
)하고 종료 ( q
)실제로 파일 수가 명령 줄 제한을 초과하면 명령을 사용할 수 있습니다 find
. 필요에 따라 매개 변수 (시작 디렉토리, 파일 이름 등)를 조정합니다.
find . -name 'ENSG*' -exec sh -c 'printf "1i\n\t%s\\n.\nw\nq\n" "$1" | ed -s "$1" ' findsh {} \;
핵심 솔루션은 동일하지만 내가 "찾기 셸"이라고 부르는 것으로 래핑되어 있습니다 . 일치하는 각 (단일) 파일 이름에 대해 find
실행 sh -c ...
됩니다. findsh
문자열의 그루터기의 이름 $0
과 파일 이름은 대신에이 쉘에 전달됩니다 {}
중괄호. 그러면 쉘 자체는 매개 변수로 파일 이름을 가지 $1
므로 printf
및 ed
명령이 사용합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다