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...
にするにはどうすればいいですか?
使用する - brace expansion
cat file.88_{0..100}.pdb >>bigfile.pdb
存在しないファイルのエラーメッセージの出力を無視するには、次のコマンドを使用します。
cat file.88_{0..100}.pdb >>bigfile.pdb 2>/dev/null
zsh
シェルには、(n)
グロブの数値ソートを要求するためのグロブ修飾子(デフォルトのalphabeticalとは対照的に):
cat file.88_*.pdb(n) >>bigfile.pdb 2>/dev/null
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)
試してください:
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
これは、区切り文字として-k2
を使用して、(_
)2番目のフィールドでファイルをsort
することができました。ここでは>>
を使用する必要があります。そうしないと、新しいファイルごとに最後のファイルが上書きされます。
括弧なしのシェルでは、ls
+ xargs
を使用できます。
ls -v file.88_*.pdb | xargs cat > all.pdb
lsはファイルを数値順にソートします。
-v
テキスト内の(バージョン)番号の自然な種類。