• ベストアンサー

文字コード変換、改行コード変換をn件ずつ実効

UNIX初心者です。 指定ファルダにあるファイルについて 文字コード変換、改行コード変換を一括で行ないたいです。 しかし、以下のコマンドではファイル数が多すぎて、一括変換が出来ません。 find . -type f -print0 | xargs -0 nkf --overwrite -s --windows いい方法ありましたら、ご教示いただきたいです。 よろしく御願いします。 (具体例をだしていただけると助かります)

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

xargsはコマンドラインを適当に分割してくれるので「ファイル数が多すぎて、一括変換が出来ません」ということは無いはずなんですが。 「一括変換が出来ません」の内容を、もっと具体的に書いてもらえませんか? 本当にファイル数が多すぎてxargsで不具合が起っているなら find . -type f -exec nkf --overwrite -s --windows \{\} \; でいいはずです。1ファイルずつnkfを実行するので、速度は落ちますが

manaaaa1013
質問者

お礼

ご教授頂いた方法で実効できました。 ありがとうございました。 ※私の方法だと、Too many open filesというエラーになっていました。

その他の回答 (1)

回答No.2

#1 さんの解答の最後の \; を \+ に変えると、 ARGMAX ずつ処理してくれると思います。 find . -type f -exec nkf --overwrite --windows '{}' '+' あるいは zsh を使っているなら、 autoload -Uz zargs zargs ./**/*(.) -- nkf --overwrite --windows とか。

manaaaa1013
質問者

お礼

変わらず、Too many open filesというエラーになってしまいました。。

関連するQ&A

  • 改行コードの変換について

    OS:Solaris2.6 改行コードをunixからms-dosへ、ms-dosからunixへ変換したいと思っています。 ながれとしては、ms-dosで作成したファイルをunixのほうで編集(プログラム) して、再びms-dosに戻すといったことがしたいと思っています。 そこで、 nkf -e aaa | tr '\r\n' '\n' > bbb nkf -e ccc | tr '\n' '\r\n' > ddd aaa:ms-dos ccc:編集後のファイル これでできると思ったのですが、dddの改行コードの表示がE'で Macintoshの改行コードになってしまします。 また、bbbのファイルですが改行が2回行われてしまいます。 例 aaa のファイルの内容 123 456 bbb のファイルの内容 123 456 どのようにすれば、解決できるか教えていただけないでしょうか? お願いします。

  • UNIX上で文字コードの一括変換はできますか?

    UNIX上で、文字コードを変換したいのですが、今まではSJISからEUCといった変換にnkfを使用してきましたが、nkfだと1ファイル毎でしか文字コードを変換できませんでした。1行のコマンドでそのディレクトリ内の全てのファイルの文字コードを変換してくれるコマンドはありますでしょうか? UNIX上で実現できれば、Perlでもなんでも結構です。よろしくお願いします。

  • 文字コードの変換方法

    お世話になります。 サーバ上で生成した、文字コードがEUCのテキストファイルをSJISに文字コードを変換したいのですが、nkfコマンドが使用できません。 nkfコマンドを使用せず、EUC⇒SJISへ文字コードを変換する方法をご教示頂けますでしょうか。 また文字コードを変更すれば改行コードの変更はしなくてもいいのでしょうか。 宜しくお願い致します。

  • 【unix】nkfで文字コードを変えずに改行コードを変えたい

    unix(BSD)初心者です。 PHP経由でunixを操作、ファイルの加工をしております。 nkfコマンドにてLF改行をCR+LF改行にしたいのですが、 ・文字コードは無変化で改行コードだけ変える などということはできるのでしょうか? いろいろな文字コードのファイルが混在している場合に文字コードはそのまま保ちつつ改行コードはCR+LFに統一したいのです。 お詳しい方よろしくお願いします。

  • 改行コードの変換方法を教えて下さい

    IISで使用していたCGIをApacheに移植したところ、動きません。Windowsの改行コードをUNIXのそれに変換する必要があるらしいのですが、変換の方法が判りません。どなたかご教示をお願いいたします。

  • SJISファイルを日本語でgrep

    UNIX環境で、 SJISファイルを日本語でgrepしたのですが、 ファイル名が出力されずにうまくいきません。 どなたかご教授願えないでしょうか。 [自分のコマンド] find ./ -type f -print | xargs nkf -e | grep 'テスト' とし、日本語は検地できたのですが、 ファイル名が出力されずに困っております。 grep -l としたら、↓のエラーが表示されました。 xargs: nkf: シグナル 13 によって終了しました サブディレクトリも含めて検地したいのですが、 なにかいい方法ありますでしょうか。

  • 文字コードの判別について

    とあるテキストファイルがあります。UNIX上で文字コードの判別を行いたいのですが、nkf --guess test.txtと打って調べると、 test.txt: ASCII (CRLF) となります。このファイルは、Shift-JISだという判定だと思います。 ファイルをUTF8に変換したいので、(1)Windows上のエディタ(秀丸)の機能を使ってUTF8に変換してからUNIX上にアップロードしたり、また(2)UNIX上から直接nkf -w --overwrite test.txtを実行して変換したりしたのですが、nkf --guess test.txtを打って調べると相変わらず test.txt: ASCII (CRLF) のままです。 色々調べた結果、ファイルの中身が英数字のみしか書かれていないので、nkfがこのファイルをShift JISだと「推測」しているということがわかってきました。確かに、試しにファイルの中身に日本語を書いて保存して実行してみると、ようやくnkf --guess test.txtの結果が test.txt: UTF-8 (CRLF) と表示されるようになりました。 これらの結果は、ファイルの中身のマルチバイト文字のコードを見て初めて文字コードがわかるようになるというように思えます。 私の理解ではファイル自体にEUCやShift JIS、UTF-8などの文字コードがあるものとばかり思っておりました。つまり、test.txtの内容が"This is a pen."であったとしてEUC、Shift JIS、UTF-8では全く異なる三種類のファイルが存在し得るものだと思っておりました。しかしこれは私の理解が間違っていて、英数字であれば常にShift JISであり、マルチバイト文字があって初めてUTF-8なのかEUCなのかShift JISなのかが決定されるということなのでしょうか? 英数字のみのファイルでもUTF-8ファイルという前提を確認する方法はないのでしょうか? 宜しくお願いします。

  • 文字コードの変換について教えてください

    文字コードUTF-16、Little-Endian、改行コードCR/LF、BOMのデータを読み込み、 シフトJISに変換して処理するため、次のようにしたのですが、 中ほどのデータが消えてしまいます。 何か間違っていますか? require 'nkf' ... text = file_in.read text_shiftjis = NKF.nkf('-sW16L',text)  p text_shiftjis #確認用出力

    • ベストアンサー
    • Ruby
  • 改行コードとテキストエンコーディングについてお伺い致します。

    改行コードとテキストエンコーディングについてお伺い致します。 あるデータファイルの改行コードは「Unix(LF)」, テキストエンコーディングは「UTF-8(BOMなし)」という指定があります。Mac Book (OS X 10.6.4)でテキストエディットで打ち込んだ物を使っているのですが,その指定に該当するのか、もし違うのであれば、どう修正したらよいかわかりません。ご教示いただけたら幸いです。

    • ベストアンサー
    • Mac
  • 文字コード変換について

    現在、あるWebシステムを開発中なのですが、文字コードについて基本的な質問があります。開発中のシステムでは、データベースはOracleでAL32UTF8(UTF8)を使っています。アプリケーション自体はJavaで開発しています。このWebシステムには以下のように外部システムやファイル経由でデータをロードすることがあります。 (1)ファイル経由でデータをロードする場合 クライアント端末からファイルを読み込ませてそのファイルのデータをデータベースにロードするような動作があります。この際、ファイル自体の文字コードは重要ですか(データベースがUTF8である以上、ファイルがUTF8でないとそのままロードすると文字化けする等の現象がありますか)?基本的にはWindowsクライアントですが、OSのバージョンは多様なので、OSによっては(メモ帳などでデフォルトで保存される文字コードによっては)問題が起こり得るのでしょうか?その場合は、ファイルアップロードの際にUTF8以外の文字コードであるかを自動判別して、UTF8に変換するような必要がありますでしょうか?UNIXではnkfで指定の文字コードに変換できるらしいことは知っていますが、ウェブアプリケーションでそのような自動判別からのUTF8変換など、可能なのでしょうか?コードを教えて頂けると大変助かります。 (2)外部システム経由でデータをロードする場合 メインフレームなど他のシステムから、例えばSOAPなどでインテグレーションする場合にも、文字コードを意識しないとやはり文字化けを招くことになりますか?(文字列が例えばEUCやEBCDICでわたってくる場合は、それをコード変換する必要がありますか?)それはnkfコマンドによるファイル変換のように一発で出来ることなのか、それとも一文字一文字何らかの処理を行うものなのでしょうか?Javaで数行プログラムを書けば済むレベルの話なのか、HULFTなどの高価なツールでないと対応できない話なのか、全く想像がつかないため教えて頂けると大変幸いです。 以上、宜しくお願いします。

    • ベストアンサー
    • Java