WindowsでGitBashを使用してテキストファイルを一括変換し、テキスト行を一括追加

2028 ワード

GitBashはMinGWを採用し、MinGWはCygwinをベースに発展した.
GitBashにはLinuxでよく使われるコマンドが含まれています.ここではfind,iconv,sedの3つを使用します.
1.一括変換テキストファイル符号化
for i in `find ./ -type f -regex ".*\.js\|.*\.css"` ; do `iconv -f gbk -t utf-8 $i > ${i}.tmp` && mv ${i}.tmp $i ; done

現在のディレクトリの下のすべてのjs,cssファイル(サブディレクトリを含む)を検索し,ファイルの符号化をgbkからutf-8に変更する
2.テキスト行の一括追加
$ for i in `find ./ -type f -name "*.asp"` ; do `sed '1i<%@ CodePage=65001 Language="VBScript" %>' $i > ${i}.tmp && mv ${i}.tmp $i` ; done

現在のディレクトリの下にあるすべてのaspファイル(サブディレクトリを含む)を検索し、ファイルの最初の行の前に新しい行を追加します.内容は「<%@CodePage=65001 Language="VBScript"%>」です.
3.説明
3.1 for文
for i inコマンド1;doコマンド2;done
コマンド1が実行されてコンソールに出力されたテキストは、for文によって行ごとに取り出され、変数iとして保存され、コマンド2に渡されて実行され、ループを実現する.
サブコマンドが複雑な場合、shellの解析に影響します.コマンド1のパラメータの一部をforコマンドのパラメータとして使用すると、エラーが発生します.この場合、コマンドの両側に一対の`(この文字は数字1キーの左側にあり、通常はあまり使われていない)を加えて定義することができる.もちろん、コマンド文が簡単であれば、追加しなくてもいいです.
3.2 find文
findパスパラメータ
ここのパスは、現在の作業ディレクトリ:./、パラメータは3つ使用されています.
    -type f 
表示で通常ファイルを検索します.
-nameファイル名(ワイルドカードを使用可能)
どんなファイルを検索するかを表します.
-regex正規表現
ここでは正規表現を使用してファイル名の一致を行います.「.*.js|.*.css」、ここの「」はエスケープ記号です.「.*」は任意の複数の文字を表し、「.js」は接尾辞名を表す.js,「|」は、jsまたはcssという接尾辞のファイルを検索することを意味します.
3.3 iconv文
iconv-fソース符号化-tターゲット符号化ファイル名
したがって、上記のコマンドは、ファイル$iをgbk符号化からutf-8符号化に変換することである.
3.4 sed文
sed'命令文'ファイル名
ここで、肝心なのは命令文で、1 iXXXXXの意味は1行目の前に新しい行を挿入することで、内容は次のテキストに続いています.コマンドマニュアルを参照してください.
3.5 mv文
これはファイル名の変更で、詳しくは説明しません.
3.6>パイピングおよび&&オペレータ
前者は標準出力を他のデバイスに転向し、ここではファイルを指します.iconvコマンドとsedコマンドは、コンテンツを直接出力する画面上の(標準出力装置)なので、>で出力をファイルに転送すると、tmpを接尾辞として新しいファイルが作成され、一時ファイルが生成され、mvコマンドで元のファイル名に上書きされます.
後者は論理オペレータで、通常は1つの文で2つのコマンドを実行するために使用されます.
4.テキストの内容を置換するにはsedコマンドを使用します.また、notepad++の検索置換機能を使用して、マルチファイル検索置換をサポートすることもできます.ctrl+Fを押してFind in filesを選択し、正規表現もサポートします.
---Over---