ファイル名は同じですが、拡張子が別の出力用に選択した拡張子を自動的に関連付ける方法は?
入力ファイル(簡体字):
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に対して1回、File2に対して1回、2回実行する必要があることです。