web-dev-qa-db-ja.com

Windows用のdos2unixのようなものはありますか?

実行したいWindowsでいくつかのシェルスクリプトを作成していますdos2unix それらの上に。

しかし、私がそれを読んだようにdos2unixLinux環境で機能するので、Windowsでの作業中にファイルをUNIX形式に変換する方法はありますか?

CYGWINをすでにインストールしていますが、次のようないくつかの問題に直面しています。

Administrator@SGH735082N ~
$ pwd
/home/Administrator

Administrator@SGH735082N ~
$ cd C:\CVS Code

Administrator@SGH735082N /cygdrive/c/CVS
$ dos2Unix BLPDB000
BLPDB000:
dos2Unix processing BLPDB000: No such file or directory

Administrator@SGH735082N /cygdrive/c/CVS
$ dos2Unix -h
dos2Unix: bad argument -h: unknown option

Administrator@SGH735082N /cygdrive/c/CVS
$ dos2Unix --help
dos2Unix version 0.1.3
  converts the line endings of text files from
  DOS style (0x0d 0x0a) to UNIX style (0x0a)

Usage: dos2Unix [OPTION...] [input file list...]

Main options (not all may apply)
  -A, --auto     Output format will be the opposite of the autodetected source
                 format
  -D, --u2d      Output will be in DOS format
  --unix2dos     Output will be in DOS format
  -U, --d2u      Output will be in UNIX format
  --dos2unix     Output will be in UNIX format
  --force        Ignore binary file detection
  --safe         Do not modify binary files

Help options
  -?, --help     Show this help message
  --usage        Display brief usage message
  --version      Display version information
  --license      Display licensing information

Other arguments
  [input file list...]       for each file listed, convert in place.
                             If none specified, then use stdin/stdout

Administrator@SGH735082N /cygdrive/c/CVS
$

Administrator@SGH735082N /cygdrive/c/CVS
$ dos2Unix  -oBLPDB000
dos2Unix: bad argument -oBLPDB000: unknown option

Administrator@SGH735082N /cygdrive/c/CVS
$ dos2Unix -k BLPDB000
dos2Unix: bad argument -k: unknown option

Administrator@SGH735082N /cygdrive/c/CVS
$ dos2Unix BLPDB000.txt
BLPDB000.txt:
dos2Unix processing BLPDB000.txt: No such file or directory

Administrator@SGH735082N /cygdrive/c/CVS
$ pwd
/cygdrive/c/CVS
18
Elvin

Notepad ++ を使用できます。

ディレクトリを再帰的に変換する手順は次のとおりです。

  1. メニュー:検索->ファイル内を検索...
  2. Directory =再帰的にUnix形式に変換するディレクトリ。例:C:\ MyDir
  3. 何を見つける=\r\n
  4. =\nで置換
  5. 検索モード=拡張
  6. 「ファイル内で置換」を押します
10
Ahmad Boorghany

少なくとも2つのリソースがあります。

  • SourceForgeのdos2unix 、これは(2015年の時点で)活発に保守されているようで、32ビットと64ビットの両方のWindows用にコンパイル済みのリリースがあります。 unix2dos、mac2unix、およびunix2macも含まれます。
  • GnuWin32のCygUtils は、Cygwinからフォークされたその他のユーティリティであり、dos2unixとその他のいくつかの関連ユーティリティが含まれています。このパッケージは積極的にメンテナンスされていません(最終更新は2008年でした)。
6
Mike T

Perlがインストールされている場合は、次のコマンドを実行するだけです。

Perl -i -p -e "s/\r//" <filename> [<filename2> ...]
6
shx2

私は grepWin を使用しました:

  • GrepWinでファイルを含むフォルダーを開きます
  • [検索対象]セクションで
    • 「正規表現検索」を選択します
    • 検索-> \r\n
    • 置換-> \n
  • 「検索」をクリックして、どのファイルがタッチされるかを確認してから、「置換」をクリックします。
1
Antonio

Cygwinで非常に古いdos2unixバージョンを使用しています。 Cygwin 1.7はdos2unixの新しいバージョンに変更されました。これは、約2年前にほとんどのLinuxディストリビューションに同梱されているものと同じです。したがって、Cygwinのセットアッププログラムを使用してdos2unixを更新します。バージョン6.0.3を入手していることを確認します。

利用可能なdos2unixのネイティブWindowsポート(win32およびwin64)もあります。 http://waterlan.home.xs4all.nl/dos2unix.html を参照してください

よろしく、

0

PowerShellには、.NETプラットフォームの多くのツールを考えると、非常に多くのソリューションがあります。

$file = 'path\to\file'のファイルへのパスを使用して、

[IO.File]::WriteAllText($file, $([IO.File]::ReadAllText($file) -replace "`r`n", "`n"))

または

(Get-Content $file -Raw).Replace("`r`n","`n") | Set-Content $file -Force

すべてのファイルに対してこれを行うには、ファイルリストを上記のコマンドにパイプします。

Get-ChildItem -File -Recurse | % { (Get-Content -Raw -Path $_.Fullname).Replace ("`r`n", "`n") | Set-Content -Path $_.Fullname }

見る

大きなファイルの場合は、バッファリングソリューションを使用することをお勧めします powershellを使用してCRLFを置き換える

0
phuclv

Windowsの優れたテキストエディタは、改行だけを行の終端としてテキストファイルの保存をサポートしています。

テキストファイルをDOS/WindowsからUNIXの行末に自動変換するには、バッチファイル JREPL.BAT を使用できますDave Benhamによって記述され、バッチファイルです/ Windows XPでも動作するJScriptを使用してファイルで正規表現置換を実行するJScriptハイブリッド。

次の例を使用して、単一のファイルをDOS/WindowsからUNIXに変換できます。

jrepl.bat "\r" "" /M /F "Name of File to Modify" /O -

この場合、改行はすべてファイルから削除されて変更されます。もちろん、"\r\n"を検索文字列として使用し、"\n"を置換文字列として使用して、ファイルに改行が含まれていないはずの場所に改行が残っている場合は、改行に残っている改行のみを削除することもできます。行末記号の変換時に削除されます。

ディレクトリの複数のファイルまたはディレクトリツリー全体は、コマンド[〜#〜] for [〜#〜]を使用してDOS/WindowsからUNIXテキストファイルに変換できます[〜# 〜] call [〜#〜]バッチファイルJREPL.BATワイルドカードパターンに一致する各ファイル。

現在のディレクトリにあるすべての* .shファイルをDOS/WindowsからUNIXに変換するバッチファイルの例。

@for %%I in (*.sh) do @call "%~dp0jrepl.bat" "\r" "" /M /F "%%I" /O -

バッチファイルJREPL.BATは、このコマンドラインを含むバッチファイルと同じディレクトリに保存する必要があります。

使用するコマンドとその機能を理解するには、コマンドプロンプトウィンドウを開いて次のコマンドを実行し、各コマンドに対して表示されるすべてのヘルプページをよく読みます。

  • jrepl.bat /?
  • call /?
  • for /?
0
Mofi

Notepad ++で解決しました。

移動:編集-> EOL変換-> Unix。

0
kle10