파일 이름은 같지만 확장자가 다른 출력을 위해 선택한 확장자를 자동으로 연결하는 방법은 무엇입니까?
입력 파일(간체):
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로 끝나는 파일은 무시합니다. grep
File1을 제외한 모든 항목을 정렬합니다. 그런 다음 cat 명령에 파일 이름을 입력하고 >>
이를 file.merged에 추가합니다.
이것의 유일한 단점은 File1에 대해 한 번, File2에 대해 한 번, 두 번 실행해야 한다는 것입니다.