catを使用して「分割」出力ファイルを表示することはできません。 [閉じる]

catを使用して「分割」出力ファイルを表示することはできません。 [閉じる]

ファイルa.txtには以下が含まれます。

1 one
2 two
3 three
4 four
5 five
6 six

split -2 a.txt output_その後、コマンド:出力で3つの新しいファイルを作成するoutput_aaoutput_aboutput_ac

次のように入力するとcat output_aaメッセージが表示されますno such file or directory

しかし、output_aageditで見ることができます。

なぜ?

ベストアンサー1

man split部分的には次のように言います。

固定サイズ INPUT を PREFIXaa, PREFIXab, ... に出力します。

PREFIX最後のコマンドライン引数はどこにあります(output_あなたの場合)。したがって、出力ファイルの名前はoutput_aa、、output_abおよびでoutput_acそれぞれ2行ずつ3つの部分に分けられます。

これも私が見た行動です。

だから読めない理由は、output_a自分で作らなければ存在しないからです。

単一文字プレフィックスのみを使用してファイル名を指定する場合すでに分割を実行している場合は、名前を変更できます。 bashを仮定すると、これを使用できます変数の再構築機能サフィックスの最初の文字を削除します。これは重複を引き起こす可能性があります(これは特別なケースではありませんが、一般的なケースかもしれません)。

for f in output*; do echo mv "${f}" "${f%a?}${f##output_?}"; done

ターゲット名式の最初の部分はファイル名の末尾a?(文字)から削除され、2番目の?部分のみが最初output_?(やはりランダム文字)から削除され、残りは追加されます。?結果は、サフィックスの最初の文字を削除することです。

あなたの要件が満たされている場合は削除してくださいecho

再実行を承諾できる場合split、GNU coreutils(8.5以降)には、サフィックスの長さを指定するsplitオプションがあります。--suffix-length適切な値を使用して、コマンドラインに以下を追加するだけです。

split -2 --suffix-length=1 a.txt output_

これは期待どおりにoutput_aoutput_bおよびを提供します。output_cありがとう@don_crisstiこれを指摘してください。

おすすめ記事