이름은 동일하지만 확장자가 다른 서로 다른 입력 .txt 및 .tsv 파일(디렉토리 내)을 출력 파일에 병합하는 방법은 무엇입니까?
입력: file1.txt
, file2.txt
, file1.tsv
,file2.tsv
출력: file1.merged
,file2.merged
답변1
그리고 zsh
:
ext='(txt|tsv|text|log)'
for f (**/*.$~ext(.)) cat < $f >> $f:t:r.merged
동일한 디렉터리 내의 병합은 알파벳순으로 정렬됩니다. 즉, before before 및 before a/file.txt
에 포함됩니다 .b/file.txt
a/file.log
a/file.txt
또한 숨겨진 파일(이름이 로 시작하는 파일 .
)은 고려되지 않습니다( D
필요한 경우 glob 한정자를 추가하세요).
답변2
cat file1.* > file1.merged
cat file2.* > file2.merged