다음 파일 이름을 가진 폴더가 있는 경우:
cluster_sizes_0.txt
cluster_sizes_1.txt
cluster_size_2.txt
등.
각 파일에는 값 열이 포함되어 있습니다.
Linux에 모든 파일을 Cluster_all.txt로 병합하는 명령이 있습니까?
이 새 파일의 첫 번째 열은 에 해당하고 두 번째 열은 등에 cluster_sizes_0.txt
해당합니다 .cluster_sizes_1.txt
클러스터링된 txt 파일은 최대 200개까지 있을 수 있지만 각 폴더는 서로 다릅니다. 이 파일들을 하나씩 복사하지 않고 합칠 수 있는 방법을 찾고 있습니다.
또한 파일에 순서대로 붙여넣어졌는지 확인해야 합니다. 10 미만인 경우 한 자리 숫자만 포함하므로 번호 매기기 시스템에 몇 가지 문제가 발생할 수 있습니다.
예를 들어:
paste cluster_size.* > cluster_all.txt
번호 매기기 문제로 인해 순서대로 붙여넣지 않았습니다. 모든 번호를 수동으로 변경하지 않고 번호 매기기를 수정하려면 어떻게 해야 합니까?
답변1
이 명령은 paste
열을 함께 병합합니다. 예를 들어, 다음과 같은 3개의 파일이 있는 경우 붙여넣으면 좋은 결과가 생성됩니다.
$ cat file_1.txt
1a
1b
1c
$ cat file_2.txt
2a
2b
2c
$ cat file_3.txt
3a
3b
3c
$ paste -d, file_1.txt file_2.txt file_3.txt
1a,2a,3a
1b,2b,3b
1c,2c,3c
이제 문제는 실제로 파일을 순서대로 가져오는 방법입니다. 우리는 속이고 ls
다른 사람들이 우리를 위해 일하도록 만들 수 있습니다
$ ls
file_1.txt file_13.txt file_17.txt file_20.txt file_6.txt
file_10.txt file_14.txt file_18.txt file_3.txt file_7.txt
file_11.txt file_15.txt file_19.txt file_4.txt file_8.txt
file_12.txt file_16.txt file_2.txt file_5.txt file_9.txt
$ ls -v
file_1.txt file_5.txt file_9.txt file_13.txt file_17.txt
file_2.txt file_6.txt file_10.txt file_14.txt file_18.txt
file_3.txt file_7.txt file_11.txt file_15.txt file_19.txt
file_4.txt file_8.txt file_12.txt file_16.txt file_20.txt
$ paste -d, $(ls -v file_*.txt)
1a,2a,3a,4a,5a,6a,7a,8a,9a,10a,11a,12a,13a,14a,15a,16a,17a,18a,19a,20a
1b,2b,3b,4b,5b,6b,7b,8b,9b,10b,11b,12b,13b,14b,15b,16b,17b,18b,19b,20b
1c,2c,3c,4c,5c,6c,7c,8c,9c,10c,11c,12c,13c,14c,15c,16c,17c,18c,19c,20c
이제 구문 분석은 ls
일반적으로 나쁜 것입니다. 예상치 못한 파일 이름이나 이상한 문자(예: 공백, 와일드카드)가 있는 경우 스크립트가 중단될 수 있습니다. 그러나 파일 이름이 "ok"라고 확신한다면 이것이 작동할 것입니다.