選択した拡張を出力に接続する

選択した拡張を出力に接続する

ファイル名は同じですが、拡張子が別の出力用に選択した拡張子を自動的に関連付ける方法は?

入力ファイル(簡体字):

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に対して1回、File2に対して1回、2回実行する必要があることです。

関連情報