
いつもOKWaveでお世話になっております。
表題の件ですが、
UNIXのsplitコマンドで分割したファイルに拡張子を付けたく
コマンドライン上で分割されたファイルを同時にリネームする方法を探しております
ファイル分割
% split -a 3 -d -l 100 sample.txt sample_
※100行単位で分割ファイルを3桁の数字で連番を付けています
処理結果
sample_000
sample_001
sample_002
sample_003
・ ・ ・
上記ファイルに「.txt」を付けたいと考えております
例)
sample_000.txt
sample_001.txt
sample_002.txt
sample_003.txt
・ ・ ・
書き方の問題かと思うのですが、
renameコマンドを使いファイル名を変更しようとするも変化なしとなります
% rename sample_* sample_*.txt sample_*
最終的にはコマンドをパイプで繋いで
分割からリネームまで1本の処理で完結したいと考えております。
恐れ入りますが、ご教示のほどよろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
確認しました。
coreutilsのNEWSより
> * Noteworthy changes in release 8.16 (2012-03-26) [stable]
> split now accepts the --additional-suffix option, to append an
> additional static suffix to output file names.
ということなので、coretilsを8.16以上にアップデートすれば、 --additional-suffix が使えます。
現在のまま使うなら、次のようにします
(1)変換元のファイル名を取得
(2)元ファイル名に .txt を付けた変換先のファイル名を用意
(3) mv 変換元 変換先 (あるいは、これと同等の操作) を行う
(4) (1),(2),(3)を全対象ファイルについて実行
私ならこうかな。
\ls -1 sample_[0-9][0-9][0-9] | sed 's/.*/mv & &.txt/' | sh
No.2
- 回答日時:
「他のファイルが混ざる」ということがなければ for でまわすだけ.
ちなみに, 「パイプで繋ぐ」と期待した動作にはならないかもしれない.
No.1
- 回答日時:
-d オプションを使える、ということは、GNU版のsplitですよね?
だとすると、man split とか split --helpとかでマニュアルを読めば
‘--additional-suffix=suffix’
Append an additional suffix to output file names. suffix must not contain slash.
というのがあります。
http://www.gnu.org/software/coreutils/manual/cor …
renameコマンドはUNIXでは標準ではありません。
http://x68000.q-e-d.net/~68user/unix/pickup?rename
https://wiki.ubuntulinux.jp/UbuntuTips/FileHandl …
を見ると、2種類の書式のが出回っているようです。
どちらを使うにしろ
rename sample_* sample_*.txt sample_*
という書き方では期待通りに動きません。
なお、 * はコマンドに渡す前に、シェルで展開されます。
sample_* sample_*.txt
で、 前の*と後の*を対応させようとお考えなのでしょうが、 sample_* はこの*に対応したファイル名一覧に書き換えられ、実際に実行されるのは
rename sample_001 sample_002 sample_003 (略) sample_*.txt sample_001 sample_002 sample_003 (略)
というコマンドラインです。
Windowsのワイルドカードとは動作が違うので注意しましょう
この回答への補足
ご回答ありがとうございます。
--additional-suffix=suffixを付けて実行したところ
認識できないオプションと表示されました
splitのhelpも項目としては表示されませませんでした
教えて頂きましたオプションは入っていないようです
% split --help
使用法: split [オプション] [INPUT [PREFIX]]
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when INPUT
is -, read standard input.
長いオプションに必須の引数は短いオプションにも必須です.
-a, --suffix-length=N use suffixes of length N (default 2)
-b, --bytes=SIZE put SIZE bytes per output file
-C, --line-bytes=SIZE put at most SIZE bytes of lines per output file
-d, --numeric-suffixes use numeric suffixes instead of alphabetic
-l, --lines=NUMBER put NUMBER lines per output file
--verbose 各々の出力ファイルを開く直前に, 標準エラー出力に
診断メッセージを表示
--help この使い方を表示して終了
--version バージョン情報を表示して終了
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- UNIX・Linux bashの変数でブランクがあるかチェックする方法教えて下さい。 3 2023/04/06 16:09
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Windows 10 renameコマンドでファイル名からアンダースコアを消す方法 5 2023/04/24 13:33
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- その他(プログラミング・Web制作) ファイル名の一部をbatで変更したい batファイルを使って、以下のようにファイル名の一部を変更した 3 2023/02/21 20:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
多数のサブディレクトリ内のフ...
-
VBAでワークシートを引数として...
-
Windowsのバッチファイルを利用...
-
リモートのファイル存在確認
-
バッチファイル 複数ファイル...
-
テキストファイルで提出とは?
-
renameコマンドについて
-
エクセルの各セルの内容をそれ...
-
VBSでフォルダ内のテキストファ...
-
ファイル名の一部をbatで変更し...
-
ファイルを処理中に次の処理に...
-
【C++】 ファイルの名前を変更...
-
外部exeに対しての引数受け渡し
-
COPYコマンドで結合すると余計...
-
ファイルの最後に文字列挿入
-
Excel VBAの文字列と数値の分類
-
【csh】ファイルの中の値を配列...
-
バッチ(bat)でリストファイルか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
拡張子を元に戻す
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
多数のサブディレクトリ内のフ...
-
psqlでエラーログをとりたい
-
COPYコマンドで結合すると余計...
-
エクセルの各セルの内容をそれ...
-
バッチファイルで文字列削除に...
-
ファイルの最後に文字列挿入
-
UWSCでテキストファイルを開い...
-
バッチファイル 複数ファイル...
-
renameコマンドについて
-
ファイル名の一部をbatで変更し...
-
forfilesで検索したファイルを...
-
外部exeに対しての引数受け渡し
-
Windowsのバッチファイルを利用...
-
VBSでフォルダ内のテキストファ...
-
VBAでエクセルをtxtに変換する...
-
ExcelVBA テキストファイルUNIC...
おすすめ情報