file.88_0.pdb
、、、、file.88_1.pdb
という...
ファイルがありますfile.88_100.pdb
。後ろ、後ろに貼り付けcat
たいです。file.88_1.pdb
これにより、ファイルは次の順序でクリーンアップされます。順番に組み合わせるにはどうすればよいですか?file.88_0.pdb
file.88_2.pdb
file.88_1.pdb
cat file.88_*.pdb > all.pdb
0 1 10 11 12 13 14 15 16 17 18 19 2 20...
0 1 2 3 4 5 6...
答え1
cat file.88_{0..100}.pdb >>bigfile.pdb
ファイルが存在しないというエラーメッセージの印刷を無視するには、次のようにします。
cat file.88_{0..100}.pdb >>bigfile.pdb 2>/dev/null
zsh
シェルでは、(n)
globbing修飾子を使用して要求することもできます。数値ソート(デフォルトアルファベット順に)グローバルの場合:
cat file.88_*.pdb(n) >>bigfile.pdb 2>/dev/null
答え2
中かっこ拡張のないシェルでは、ファイル名にスペース、引用符、またはバックスラッシュが含まれていない場合ls
(GNU実装の仮定)+を使用できますxargs
。
ls -v file.88_*.pdb | xargs cat > all.pdb
ls
ファイルは番号順にソートされます。
-v
テキスト内の(バージョン)番号の自然な順序。
答え3
cat $(for((i=0;i<101;i++)); do echo -n "file.88_${i}.pdb "; done)
またはJesse_bのコメントに関して:
cat $(for((i=0;i<101;i++)); do test -f "file.88_${i}.pdb" && echo -n "file.88_${i}.pdb "; done)
答え4
努力する:
filedir="/path/to/files"
output="/path/to/all.pdb"
for file in $(find $filedir -type f -name "file.88_*" | sort -t "_" -k2 -n); do
cat $file >> $output
done
これにより、sort
()2番目のフィールドを区切り文字-k2
として使用できます。_
ここを使用する必要があります>>
。それ以外の場合は、各新しいファイルが古いファイルを上書きします。