差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
study:linux:tip [2025/01/27 05:54] bananastudy:linux:tip [2025/02/28 01:31] (現在) – [一括置換コマンド] banana
行 1: 行 1:
 ====== 疑似treeコマンド作成 ===== ====== 疑似treeコマンド作成 =====
-treeコマンドのインストールできない環境でtreeコマンドを利用できる方法を説明します。 +treeコマンドのインストールできない環境でtreeコマンドを利用できる方法を説明します。\\ 
-find、sedコマンドを利用した下記コマンドを使います。+find、sed((「sed」は「Stream EDitor」の略で、「sed スクリプトコマンド ファイル名」で、指定したファイルをコマンドに従って処理し、標準出力へ出力します。ファイル名を省略した場合は、標準入力からのデータを処理します))コマンドを利用した下記コマンドを使います。
 <code> <code>
-pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/| /g'+pwd;find . | sort | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
 </code> </code>
 上記コマンドを.bashrcに追加してaliasとして使えます。 上記コマンドを.bashrcに追加してaliasとして使えます。
-<code linux+<code> 
-alias tree="pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*//g'"+alias tree="pwd;find . | sort | sed -e 's/[^-][^\/]*\// |/g' -e 's/|\([^ ]\)/|-\1/'" 
 +</code> 
 +ここで、最初のsedコマンドはディレクトリ各部分を|に置き換え、ディレクトリ間の階層関係を表す構造を作ります。\
 +また、2番目のsedコマンドは|の後に子ディレクトリ名がある場合、その前に-を追加して、子ディレクトリであることを示します。 
 + 
 +====== 変更ファイル検索 ====== 
 +前回のリリース以降、更新されたファイルを検索するscriptの例です。\\ 
 +使う時は、「modified.sh '2025-01-11'」のように前回のリリース日を指定します。 
 +<code> 
 +#!/bin/bash 
 + 
 +if $# -eq 0 -o $# -gt 1 ];then 
 +  echo "Usage: modified [date]" 
 +  exit 1 
 +else 
 +  when=` date --d "$1" +"%s"
 +fi 
 +now=`date +"%s"
 + 
 +seconds=`echo "$when - $now" | bc` 
 +minutes=`echo "$seconds 60 " bc ` 
 + 
 +Dir="/appl/sampleapp/" 
 + 
 +# check directory existence 
 +if [ ! -d $Dir ];then 
 +  echo "non-existent directory: $Dir" 
 +  exit 1 
 +fi 
 + 
 +find $Dir -type f -not \( -path '/appl/sampleapp/var/excel/*' -o -path '/appl/sampleapp/var/logs/*' \) -mmin $minutes -printf "%M %d %u %%TY-%Tm-%Td %p\n" | sort -r -k5,6 
 +RETURN_CODE=$? 
 +echo "epa_modified.sh exit with " $RETURN_CODE 
 +exit $RETURN_CODE 
 +</code> 
 + 
 +ここで、-not \( -path 'some path' -o -path 'another path' \)部分は検索対象から除外するパスを指定しています。 
 + 
 +======= 一括置換コマンド ======= 
 +grep、sedを用いて一括で文字列を置換するコマンドの例です。\\ 
 +現在フォルダを基準にbakファイルを検索して"jinji"文字列を含むファイルを対象に"jinjiappl"を"kanriappl"に置換するコマンドです。 
 +<code> 
 +grep -lr --include='*.bak' "jinji" . | xargs sed -i."orig" -e "s/jinjiappl/kanriappl/g"
 </code> </code>
 +ここで、\\
 +grep:\\
 + -l: matchするファイルを画面表示\\
 + -r: recursive検索\\
 + --include: grep検索対象のファイルパタン指定\\
 +
 +sed:\\
 + -i: 後ろに指定した拡張子でbakupファイル生成\\
 + -e: 実行するscriptの指定\\
  

QR Code
QR Code study:linux:tip (generated for current page)