file.88_0.pdb
, file.88_1.pdb
, ...
, 라는 파일이 있습니다 file.88_100.pdb
. 뒤에, 뒤에 붙여넣기 cat
를 원합니다 . file.88_1.pdb
이렇게 하면 파일이 다음 순서로 정리됩니다. 순서대로 조합하려면 어떻게 해야 하나요?file.88_0.pdb
file.88_2.pdb
file.88_1.pdb
cat file.88_*.pdb > all.pdb
0 1 10 11 12 13 14 15 16 17 18 19 2 20...
0 1 2 3 4 5 6...
답변1
cat file.88_{0..100}.pdb >>bigfile.pdb
파일이 존재하지 않는다는 오류 메시지 인쇄를 무시하려면 다음을 사용하십시오.
cat file.88_{0..100}.pdb >>bigfile.pdb 2>/dev/null
zsh
셸 에서는 (n)
globbing 한정자를 사용하여 요청할 수도 있습니다.수치정렬(기본값알파벳순으로) 글로벌의 경우:
cat file.88_*.pdb(n) >>bigfile.pdb 2>/dev/null
답변2
중괄호 확장이 없는 셸에서 파일 이름에 공백, 따옴표 또는 백슬래시가 포함되어 있지 않으면 ls
(GNU 구현 가정) +를 사용할 수 있습니다 xargs
.
ls -v file.88_*.pdb | xargs cat > all.pdb
ls
파일은 번호순으로 정렬됩니다.
-v
텍스트에서 (버전) 번호의 자연스러운 순서입니다.
답변3
cat $(for((i=0;i<101;i++)); do echo -n "file.88_${i}.pdb "; done)
또는 Jesse_b의 의견과 관련하여:
cat $(for((i=0;i<101;i++)); do test -f "file.88_${i}.pdb" && echo -n "file.88_${i}.pdb "; done)
답변4
노력하다:
filedir="/path/to/files"
output="/path/to/all.pdb"
for file in $(find $filedir -type f -name "file.88_*" | sort -t "_" -k2 -n); do
cat $file >> $output
done
이렇게 하면 sort
( ) 두 번째 필드를 구분 기호 -k2
로 사용할 수 있습니다. _
여기를 사용해야 합니다 >>
. 그렇지 않으면 각각의 새 파일이 이전 파일을 덮어쓰게 됩니다.