for f in `find . -maxdepth 1 -type f` ; do 「処理内容 $f」 ; done
注意: 「`」は、「shift + @」で入力すること。
(説明)
find . -maxdepth 1 -type f によって、カレントディレクトリに限定して全ファイル名を取得する。
(-maxdepth 1 をはずすと、下階層にまで下ってファイル一覧が取得される。)
その取得されたファイルリストを使って「for f in」でループ処理させ、一気に処理を行う。
ところで、-maxdepth のオプションの位置に注意。間違えると次の警告文が現れた。
-maxdepthはオプションだが、-typeはオプションではない。 オプションは、他の要素の前に置くこと。
find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
(「処理内容」の例)
テキストファイルの特定の行(文字列で指定される行)を別の文字列 で置換するため、
sedの次のコマンドを用いた。
c \text
Replace the selected lines with text,
which has each embedded newline preceded by a backslash.
選択される複数行がそれぞれ、”バックスラッシュ(「\=¥」)を前置して指定されたテキスト”で置換され、行は更新される。
次のようにコマンドを作成した。
sed -i -e '/server/c\server 127.0.0.1' 処理されるファイル名「server」を含む行を、「server 127.0.0.1」という文字列の新しい行に置換する。
オプション -i によって、処理されるファイルは上書き 保存されるので注意!
ディレクトリ内のファイルを一気に処理するコマンドをとして、次のように作成した。
念のために、echo"処理内容"として、動作を確認するようにした。
for f in `find . -maxdepth 1 -type f` ; do echo " sed -i -e '/server/c\server 127.0.0.1' $f " ; done
注意: 「`」は、「shift + @」で入力すること。
これによって、実際に実行されるコマンド文字列が一覧できる。
コマンドが正しいことが確認できたら、echo "処理" から、echo""を取り外して、
実際に処理が行えるようにする。
(参考)
・sed cコマンドの動作 (指定文字列で行を置き換え) 【Linuxコマンド】
< http://blog.livedoor.jp/morituri/archives/52018209.html > 2015年5月9日
・man sed
・sedでファイルを上書き保存
< http://www.dab.hi-ho.ne.jp/sasa/biboroku/unix/sed-i.html > 2015年5月9日