선택한 확장을 출력에 연결

선택한 확장을 출력에 연결

파일 이름은 같지만 확장자가 다른 출력을 위해 선택한 확장자를 자동으로 연결하는 방법은 무엇입니까?

입력 파일(간체):

File1.txt
File1.csv
File1.tsv
File2.txt
File2.csv
File2.gff

조치: *.txt 및 *.csv 파일을 *.merged 파일로 연결하십시오(원래 파일 이름은 유지하되 확장자는 다릅니다).

cat File1.txt File1.csv > File1.merged
cat File2.txt File2.csv > File2.merged

필수 출력 파일:

File1.merged
File2.merged

답변1

큰 타격:

txt_files=( *.txt )
for f in "${txt_files[@]}"; do 
    root=${f%%.*}
    [[ -f "$root.csv" ]] && cat "$root.txt" "$root.csv" > "$root.merged"
done

답변2

이를 수행하는 간단한 방법은 다음과 같습니다.

ls --ignore=*.tsv | grep File1 | xargs -d "\n" cat >> file.merged

또는

find . -not -name "*.tsv" -name "File1*" | xargs -d "\n" cat >> file.merged

ls모든 파일을 나열하지만 .gff로 끝나는 파일은 무시합니다. grepFile1을 제외한 모든 항목을 정렬합니다. 그런 다음 cat 명령에 파일 이름을 입력하고 >>이를 file.merged에 추가합니다.

이것의 유일한 단점은 File1에 대해 한 번, File2에 대해 한 번, 두 번 실행해야 한다는 것입니다.

관련 정보