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

相关内容