dos2unixをフォルダーのすべてのコンテンツに再帰的に適用する方法は?


11

dos2unixフォルダー内のすべてのファイルとそのサブフォルダーに対して実行されるようにコマンドを適用する方法はありますか? これを簡単にするようなオプションman dos2unixはありません-rか?

回答:



3

バイナリと隠しファイルをスキップすることは私にとって重要でした:

これは私にとってはうまくいきました:

find . -type f -not -path '*/\.*' -exec grep -Il '.' {} \; | xargs -d '\n' -L 1 dos2unix -k

これは、現在のディレクトリで非表示になっていないすべてのファイルを再帰的に検索し、grepを使用して、バイナリではない(-I)非空のファイルをすべてリストし、それをxargs(改行で区切られる)に一度に1ファイルずつパイプしますdos2unix、元のタイムスタンプを保持します。

以下も参照してください。

https://github.com/mdolidon/endlines


2

findを使用して、dos2unixコマンドで実行するディレクトリ構造内のすべてのファイルを検索できます

find /path/to/the/files -type f -exec dos2unix {} \;

findのmanページを見てください。評価するものを指定するために使用できるオプションがたくさんあります


これはうまくいきませんでした。
Alex Kinman

2
ファイルツリーの下に.gitディレクトリがある場合は、これを実行する際に十分注意してください。ローカルのgitリポジトリが破損します。
Aaron_H 2017

1

ワイルドカードを使用します。このように:(フォルダー内にいる場合)

dos2unix *

または、フォルダの外にいる場合は、次のようにします。

dos2unix /path/to/folder/*

1

使用bash

shopt -s globstar
dos2unix **

globstarシェルオプションbashは、**グロブの使用を有効にします。これは同じように機能します*/、パス名全体で一致します(したがって、サブディレクトリの名前も一致します)。これは、サブディレクトリ内に中程度の数のファイル(数千ではない)を含むディレクトリで機能します。

zshおよびyashシェル(とset -o extended-globyash)、あなたはどうなります

dos2unix **/*
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.