shell

今日書いたシェルスクリプト

#!/bin/sh if [ $# -ne 2 ]; then echo "指定された引数は$#個です。" 1>&2 echo "実行するには3個の引数が必要です。" 1>&2 exit 1 fi INFILE=$1 PATTERNS=$2 while read line; do cat $INFILE | grep "$line" done < $PATTERNS

find: 日々復習

#更新日時が30日以上前のファイルやディレクトリを探す find . -atime +30; #更新日時が30日以上前のファイルやディレクトリを探して、削除する find . -atime +30 -exec rm {} \;

メモ:rsync

#DRYRUN="--dry-run"; DRYRUN=""; rsync -avz $DRYRUN --stats --update --progress -e ssh user1@sv.example.com:/home/user1/public_html /home/user1/;

sh: 今日書いたやつ

#!/bin/sh logfile=extraction.maillog; echo >$logfile; ls -r -1 maillog* | while read maillog_name do cat $maillog_name | grep "to=anyone@example.com" >> $logfile; done

find: ファイル件数を数える

find ./ -type f | wc -l via. http://qiita.com/stc1988/items/e3a1d7dccafe4ab573fa

find: 日時指定検索

find . -atime -2 -print ↑↑↑ 2日前から本日までに作成したファイルを検索する。 find . -atime +2 -print ↑↑↑ 2日前から過去分全て作成したファイルを検索する。 もっと細かく指定して、ファイルを検索するときは、touchを使うと便利です。 touch -m -t 200…

find - 所有者で検索 / chmod で変更

find では -user オプションを使う。 ユーザIDも使えるらしい。 find ./ -user nobody #"user1"のユーザ領域内にある、"nobody"のファイル所有者を、"user1"に変更する find /home/user1 -type f -user nobody -exec chown user1 {} \; グループも、-group …

grep

生grepの使い方を忘れていた… #カレントディレクトリ以下、ファイル名が*.phpに対して、"filter"が含まれるもの grep -R --include="*.php" filter .

今日書いたfind

ls -lt `find /home f -name "init.exec*.php"` findした結果について、lsで詳細情報+日付でソートして出力。

プロセス毎のメモリ使用量を調べるコマンド

ps alx | awk '{printf ("%d\t%s\n", $8,$13)}' | sort -nr | head -10 via. http://blog.toshimaru.net/linux/

sh:ファイルを行で分割

split -l 300 file.csv まーた忘れてたし

今日書いたfind

find /home/vmail -name procmail.log -size +1024k | xargs ls -lrth

lessでtailでハイライト

$ less -pERROR\|WARNING logfile のあとに、Fでtail -f と同等。"-pERROR\|WARNING" のところで、パターン検索。

メモ::find+ls

条件付けて探した結果のファイルについて、lsで詳細表示したいなっていう。 ls -l `find ./ -mtime -24` 引用元: http://sokohakato.blogspot.jp/2009/04/findls-l.html

メモ:またわすれてた

OSバージョンとか、64bit対応だとか確認する。 less /etc/redhat-release uname -a

sh::lsコマンドで表示日付様式を変える

via http://www.softel.co.jp/blogs/tech/archives/2994 via http://q.hatena.ne.jp/1133354704現在年のファイルを含むlsすると、年表記が省略されたりするよね! 次のようにlsコマンドにオプション付けるといい感じになるとのこと。 /etc/bashrcとか、~/.ba…

subversion::.svnを除去

しばらくほおっておいたリポジトリがいつの間にかアレしちゃってて、最初からやり直したい時がある。 チェックアウトを加工して、再度リポジトリに投入したい時に。http://ishikawa.r-stone.net/2007/12/svn.html for /R %i in (.svn) do rd /Q /S "%i" 他に…

shell::tar 出力先の指定

出力先の指定には -C オプション。 # tar jxvf hoge.tar.bz2 -C /home/ftsh/hoges/

shell::find: missing argument to `-exec'

$ find -mtime +730 -exec echo {}\; find: missing argument to `-exec' \;の前にはスペースが必ず必要 $ find -mtime +730 -exec echo {}\ ; ..... スペースが入るファイル名の場合 $ find /foo/bar -name '* *.txt' -exec rm {} \; $ find /foo/bar -name…

shell::-bash: /bin/rm: Argument list too longへの対処

find . -name "hoge*" -print | xargs rm http://tech.ironhearts.com/blog/archives/88

procmail.logが邪魔

/usr/bin/find /home/vpopmail/domains/*****/ -type f -name 'procmail.log' -exec /root/echo.sh {} \; >>tmp.out

linuxとFreeBSDでの、date コマンドの差 : 数日前の日付を得る

同一のコマンドであっても、オプションが微妙に異なるとかっていうのは、以外に経験が少ない。 今回は、dateコマンドで現在時刻を基点にして指定日数前の日付を得る例。 下記は等価なコマンドオプションとなる。 #!/bin/sh ## Linux (CentOS 5) date +%Y%m%d…

シェルスクリプト実行時のエラーを捨てる

邪道なのはわかっているが、オトナの都合で捨てるしかないエラーもあるものなの><。 で、cronで定期実行させているスクリプトからエラー出力がある場合に、noticeがメールで届くのが厭っていうの。よく遭遇するのは、 aFile 'NONEXISTENT/charsets/?.conf'…

ファイルやディレクトリの日付変更

コマンド:touch (空ファイル作るのにしか使ってなかったので本来の意味を知らなかった・・・恥ずかしい///) ファイルやディレクトリの日付を変更するには、touchコマンドを使用する。touchコマンドは空のファイルを作成するにはで紹介したとおり、0byteのファ…

日付の取得

#!/bin/sh DATETIME=$(date +"%Y%m%d"); echo $DATETIME20081015

lsで、表示を時系列に並べる。

FreeBSDの場合。 $ ls -latr total **** -rw-rw-r-- 1 root wheel 1293 12 19 2007 ************.conf -rw-rw-r-- 1 root wheel 1426 1 9 2008 ************.conf -rw-r--r-- 1 root wheel 6503 1 17 2008 ************.conf_back080118 -rw-rw-r-- 1 root w…

ファイル・ディレクトリを、作成時刻からの経過時間を元に削除する

(前にメモを作ったのだが出てきてないので捜索中) スクリプトの例 #!/bin/sh #ダンプディレクトリ内の、作成から7日以上経過している*.tar.bz2ファイルを削除する /usr/bin/find $dir_dump -name '*.tar.bz2' -mtime +7 -exec /bin/rm -f {} \; >> tmp.out …

今日作ったシェルスクリプト

特定ディレクトリ毎のディスク使用量を把握したかった。 #!/bin/sh #特定ディレクトリ階層でのディスク使用量を表示 for DIR in `ls -1 $1` do du -hs $1/$DIR; done $ sh ./checkDiskSpace.sh /home 20K /home/a 346M /home/ab 47M /home/abc 138M /home/ab…