2015年4月10日金曜日

Unix(Linux) Tipsいろいろ

階層下の.git以外のCソースとヘッダ群


find . -name '.git' -prune -o -type f -name '*.c' -o -name '*.h'

※ここでは何故か最後に-printをつけると.hしか表示されず、.cのみ表示される
が、.gitが表示されてしまう。(唯一のディレクトリ)
最後のprintを除くと何故か.gitだけは表示される(その下の.git下のディレクトリ群は表示されないが)

find . -name '.git' -prune -o -type f \( -name '*.c' -o -name '*.h' \) -print
とするとうまくいった。

使用例:

#!/bin/bash

for file in `find . -name "*.c* *.h" -type f`
do
echo $file
expand -t8 ${file} > ${file}.$$ && mv -f ${file}.$$ ${file} || rm -f ${file}.$$
done


回数ループをシェルスクリプトで 


seq 1 9

for i in `seq 1 9`
do
  echo $i
done


階層下ファイルの一括置換

xargs sed -i 's/BEFOR_STRING/REPLACE_STRING/g'

これを応用し、
find . -name '.git' -prune -o -type f \( -name '*.c' -o -name '*.h' \) -print | xargs sed -i 's/\r$//'
として、改行コードをWinからUnixへ変える

0 件のコメント: