異なるディレクトリにある複数のファイルをリンクします。

異なるディレクトリにある複数のファイルをリンクします。

異なるディレクトリの複数のファイルをリンクしたいと思います。

ディレクトリ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>nnumericglobsort

他のシェルでは、次のことができます。

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 

おすすめ記事