2019年7月2日火曜日

フォルダ内全ファイル一覧、内容表示


 = フォルダ内ファイル一覧、内容表示
[2019-07-01 16:48]



file_hyouzi.shでカレントデレクトリのすべてのファイルを再帰的に
そのファイル名、@@@ のある行と次の@@@のある行の間の行を表示する。


/home/moto/myprg/file_hyouzi.sh 
file_hyouzi.sh
#!/bin/sh

# @@@
# フォルダ内のvimバックアップファイル以外のファイルで
# ファイルの@@@のある行から次の@@@のある行までを書き出す。
# そこにそのファイルの説明を書いておくと
# ファルダ内のファイル内容一覧するのに良い
# @@@

# -A ヒットした文字列後の行も書き出す

find . -name \*.* | xargs grep -A  10 '@@@' | file_hyouzi.pl > tmp.txt
vim tmp.txt

#tmpもfindの対象となってしまうため、削除しておく
if [ -e tmp.txt ]; then
  # 実行する処理、以下は例
  \rm tmp.txt
fi
#バックアップファイルも削除
if [ -e tmp.txt~ ]; then
  # 実行する処理、以下は例
  \rm tmp.txt~
fi



/home/moto/myprg/file_hyouzi.pl 
file_hyouzi.pl
#!/usr/bin/perl

#grep -A  10 '@@@' とすると
#@@@にヒットした行は   ファイル名:ヒットした行
#-A オプションでの行は ファイル名-ヒットした行
#で表示される。

$fname = "";
$flg = -1;
while ($line = <>) {
    #@@@にヒットした行
    if ($line =~ /^([^-:]+):(.*)/){
        #print "$1\t:::::$2\n";
        $flg = $flg * -1;
    } 
    #-A 10での行
    #最初の@@@で上ifが実行されて$flg=1 となり下if実行。
    #なにもしないと-A 10での行まで表示されてしまうので
    #次の@@@が来るとまた上ifが実行、$flg=-1 となり
    #下if実行されない。
    #つまり@@@と@@@ではさまれた行が表示される。
    #それをvimで表示しているのでファイル名でgfすれば
    #そのファイルにジャンプできる。
    #C-] でもとのファイルに戻る。
    if ($line =~ /^([^-:]+)-(.*)/){
        #print "$1\t$2\n";
        #vimのバックアップファイルは除く
        if ($1 !~ /~/){
            if ($flg == 1){
                #print "$1\t$2\n";

                #ne 文字列が等しくない。新しいファイルなら
                if ($fname ne $1){
                    print "\n";
                    print "$1\n$2\n";
                #ファイル名が同じならファイル名をプリントしない
                } else {
                    print "$2\n";
                }
            }
        }
        $fname = $1;
    } 
}

#ダイヤモンド演算子で標準入力から一行ずつ読み
#^行頭 .改行を除く任意の一文字 
#*ゼロ回以上の繰り返し 
#それを$1 $2 のそれぞれ入れる。


検索キーワード
ある特定の文字列がある複数行を取得する。
再帰 デレクトリ内の全ファイルに対してコマンド実行

~                                                                         
~                                                                         
~                 

0 件のコメント:

コメントを投稿

About

参加ユーザー

連絡フォーム

名前

メール *

メッセージ *

ブログ アーカイブ

ページ

Featured Posts