LoginSignup
2
3

More than 5 years have passed since last update.

[vi][小技] vimを使って複数のファイルの改行コードを一括変更する

Last updated at Posted at 2017-03-30

よそからもらってきたファイルを展開してアチャー :disappointed: な気分になったとき用です。

下記は、カレントディレクトリ以下にある拡張子PHPのファイルの改行コードをLFにします。

find . -name \*.php -exec vi -c ':e ++ff=dos' -c ':set ff=unix' -c ':wq' \{\} \;

解説

find [ディレクトリ]

指定したディレクトリ以下のファイルを探します。

-name \*.php

ファイル名の末尾が.phpに一致するファイルを探します。

-exec [コマンド] \{\} \;

見つかったファイルひとつひとつに対してコマンドを実行します。

\{\}の部分がファイル名になります。

\;はコマンドの終了位置を示します。

-c ':e ++ff=dos'

改行コードをCRLFとしてファイルを開き直します。

-c ':set ff=unix'

改行コードをLFにするようにします。

-c ':wq'

ファイルを保存してviを終了します。

試した環境

viのバージョン

% vi --version                                                                                                                    (~/projects/nikkeir-portal/src)
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Nov 24 2016 22:32:42)
Included patches: 1-1829
Extra patches: 8.0.0056
Modified by pkg-vim-maintainers@lists.alioth.debian.org
Compiled by pkg-vim-maintainers@lists.alioth.debian.org
Small version without GUI.  Features included (+) or not (-):
+acl             -farsi           -mouse_sgr       -tag_any_white
-arabic          -file_in_path    -mouse_sysmouse  -tcl
-autocmd         -find_in_path    -mouse_urxvt     -termguicolors
-balloon_eval    -float           -mouse_xterm     +terminfo
-browse          -folding         +multi_byte      -termresponse
+builtin_terms   -footer          -multi_lang      -textobjects
-byte_offset     +fork()          -mzscheme        -timers
-channel         -gettext         -netbeans_intg   -title
-cindent         -hangul_input    +packages        -toolbar
-clientserver    +iconv           -path_extra      -user_commands
-clipboard       -insert_expand   -perl            +vertsplit
-cmdline_compl   -job             -persistent_undo -virtualedit
+cmdline_hist    +jumplist        -printer         +visual
-cmdline_info    -keymap          -profile         -visualextra
-comments        -langmap         -python          -viminfo
-conceal         -libcall         -python3         -vreplace
-cryptv          -linebreak       -quickfix        +wildignore
-cscope          -lispindent      -reltime         -wildmenu
-cursorbind      -listcmds        -rightleft       +windows
-cursorshape     -localmap        -ruby            +writebackup
-dialog          -lua             -scrollbind      -X11
-diff            -menu            -signs           +xfontset
-digraphs        -mksession       -smartindent     -xim
-dnd             -modify_fname    -startuptime     -xsmp
-ebcdic          -mouse           -statusline      -xterm_clipboard
-emacs_tags      -mouse_dec       -sun_workshop    -xterm_save
-eval            -mouse_gpm       -syntax          -xpm
+ex_extra        -mouse_jsbterm   -tag_binary      
-extra_search    -mouse_netterm   -tag_old_static  
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/build/vim-vY1bx1/vim-7.4.1829=. -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1      
Linking: gcc   -Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -o vim    -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE  -lm -ltinfo  -lselinux -lacl -lattr -ldl 
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3