Bash: 두 개의 파일 시리즈를 쌍으로 연결

Bash: 두 개의 파일 시리즈를 쌍으로 연결

이 패턴을 가진 파일이 많이 있습니다.

file1_foo.ext
file1_bar.ext
file2_foo.ext
file2_bar.ext

등.

"페어링"하여 다음과 같은 파일에 넣어야 합니다.

file1_foo.txt    file1_bar.txt

(탭으로 구분됨)

이 상황에서 최선의 조치는 무엇입니까?

답변1

나는 당신이 둘 다 존재한다고 가정하고 싶지 않다고 생각합니다. 두 줄이 모두 존재하는 경우에만 두 줄이 인쇄됩니다.

for file1 in *_foo.ext; do
    file2="${file1%foo.ext}bar.ext"
    if [[ -e "$file2" ]]; then
        printf '%s\t%s\n' "$file1" "$file2"
    fi
done

견본:

$ tee {1,2,3}_foo.ext {1,3,4}_bar.ext </dev/null >/dev/null
$ ./script
1_foo.ext   1_bar.ext
3_foo.ext   3_bar.ext

관련 정보