異なるディレクトリの複数のファイルをリンクしたいと思います。
ディレクトリ1:Chr1
この例では4つのファイルが含まれています。
ABC.1
DEF.1
GHI.1
JKL.1
カタログ 2:Chr2
ABC.2
DEF.2
GHI.2
JKL.2
22のディレクトリがあります。各ファイルには20個の列とヘッダーがあります。ヘッダーはすべてのファイルに同じです。
すべてを1つのファイル(すべてのディレクトリ内のすべてのファイルをリンクするグローバル出力ファイル)にリンクしたいと思います。
私はこれを試しましたが、うまくいきません。
cat */Chr{1..22}/*.{1..22} > */final_file
ファイルがないため、「該当するファイルやディレクトリはありません」と表示されます。たとえば、* .1〜21はchr22ディレクトリにあるファイルです。
どんな考えがありますか?よろしくお願いします。
ベストアンサー1
ただzsh
シェルを使用してください:
cat -- */Chr<1-22>/*.<1-22>(n) > final_file
は10進数の範囲に一致するglob演算子であり、glob修飾子はglob拡張が数値でソートされるようにするオプションを切り替えzsh
ます。<x-y>
n
numericglobsort
他のシェルでは、次のことができます。
zsh -c 'cat -- */Chr<1-22>/*.<1-22>(n) > final_file'
最初のファイルを除くすべてのヘッダーをスキップし、GNUまたはBusinessBoxの実装tail
(Linuxをカーネルとして使用するシステムで最も一般的です)を想定するには、次のようにします。
(){
cat < $1; shift; (($#)) && tail -qn +2 -- "$@"
} */Chr<1-22>/*.<1-22>(n) > final_file