![Bash: 두 개의 파일 시리즈를 쌍으로 연결](https://linux55.com/image/30523/Bash%3A%20%EB%91%90%20%EA%B0%9C%EC%9D%98%20%ED%8C%8C%EC%9D%BC%20%EC%8B%9C%EB%A6%AC%EC%A6%88%EB%A5%BC%20%EC%8C%8D%EC%9C%BC%EB%A1%9C%20%EC%97%B0%EA%B2%B0.png)
이 패턴을 가진 파일이 많이 있습니다.
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