UNIX ( Linux FreeBSD )のシェルコマンドに関する各種メモ書き:タグ「ファイル」での検索

unixコマンドで x日前のファイルを削除する

● x日前のファイルを調べる

testディレクトリ以下の 3日前より古いファイルを検索するコマンドは

find ./test/* -mtime +3 

とします。

● x日前のファイルを削除する

testディレクトリ以下の 3日前より古いファイルを削除するコマンドは

find ./test/* -mtime +3 -exec rm -f {} \; 

とします。

No.1073
12/31 13:45

edit

ファイル

unixであるディレクトリ以下のすべてのファイルを再帰的に権限変更(chmod)する

unixであるディレクトリ以下のすべてのファイルを再帰的に権限変更(chmod)するには以下のようにパイプを使って流し込みます

カレントディレクトリ以下のすべてのファイルの権限を(0666)にする

find ./ -type f -print0 | xargs -0 chmod 0666

カレントディレクトリ以下のすべてのディレクトリの権限を(0777)にする

find ./ -type d -print0 | xargs -0 chmod 0777

カレントディレクトリ以下のすべての( .log )ファイルの権限を(0666)にする

find . -name "*.log" -type f -print0  | xargs -0 chmod 0666

カレントディレクトリ以下のすべての .sqlite3 ファイルの権限を(0666)にする

find . -name "*.sqlite3" -type f -print0  | xargs -0 chmod 0666

find に `-print0xargsに-0` をつけることによってスペースを含むファイルも処理できるようにしています

・カレントディレクトリ以下のすべての templates_c ディレクトリの権限を(0777)にする

find ./ -name templates_c -type d -print | xargs chmod 0777

・カレントディレクトリ以下のすべての cache ディレクトリの権限を(0777)にする

find ./ -name cache -type d -print | xargs chmod 0777
No.1064
12/31 13:44

edit

ファイル

テキストファイルから重複行を削除するコマンド【uniq】

テキストファイルから重複行を削除するには

エクセル等で作業する方が多いみたいですが、unixコマンド一発です。

uniq ファイル名 

重複行が削除されたテキストが画面上に表示されます。

結果をファイルに保存したい場合は

uniq ファイル名  > 保存するファイル名

でOK。

No.739
07/29 13:55

edit

ファイル

diff(ファイル比較コマンド)の結果を色付けして見やすくする 【colordiff】

colordiffというdiff(ファイル比較コマンド)の結果に色を付けるコマンドがあり、なかなか便利なので導入してみます。

インストールは yumコマンド一発

yum install colordiff

■ 使い方1( diffコマンドの代わりとして使用する )

colordiff ファイル1 ファイル2


■ 使い方2 ( パイプとして使用する )

cat diff_result.txt | colordiff

■ 色の設定の仕方

色の設定ファイルは /etc/colordiffrc というファイルなのでこれをホームディレクトリの .colordiffrc というファイルにコピーして使用する

cp /etc/colordiffrc ~/.colordiffrc

中身はこんな感じ

banner=no
plain=black
newtext=darkblue
oldtext=darkred
diffstuff=darkgreen
cvsstuff=darkwhite

No.529
04/19 12:07

edit

ファイル

あいまい検索コマンド【agrep】を使用する。

曖昧検索を行うコマンド「agrep」 というのがあるが、標準ではインストールされていない事がある。

のでまず「yum」コマンドを使ってインストール(Fedora Coreの場合)

yum install agrep

インストールが完了したら

whereis agrep

で確認。

■ agrepの使い方(普通の検索)

agrep wordtest /usr/share/dict/words

単語「wordtest」が /usr/share/dict/words にあるかどうか検索する。(普通の検索)

■ agrepの使い方(あいまい検索)

agrep -1 wordtest /usr/share/dict/words

単語「wordtest」に1文字分の間違いを許容した範囲で検索する。(あいまい検索)

■ agrepの使い方(あいまい検索 Best-match)

agrep -i -y -B wordtest /usr/share/dict/words

オプション -B をつけると一番近いと思われる単語を検索する

No.449
04/19 12:13

edit

ファイル

複数のファイルのファイル名(拡張子)を一括で変更する。

UNIXでのファイル名変更コマンドは

mv file1.cgi file1.txt

(file1.cgi を file1.txt という名前に変更する)

ですが、これを一括でしようと思って

mv *.cgi *.txt

としてもエラーとなります。

そこで for文 を使って

for fname in *.cgi; do
mv $fname ${fname%.cgi}.txt;
done

とします

参考:http://www.atmarkit.co.jp/flinux/rensai/linuxtips/248chngext.html

No.418
04/19 12:10

edit

ファイル

あるディレクトリ以下の合計ファイル数を再帰的に知るunixコマンド

あるディレクトリ以下の合計ファイル数を知るには

合計ファイル数:

ls -laR | grep -c '^-'

合計ディレクトリ数:

ls -laR | egrep -c '^d.+[^.]$'

でいけます。

なおあるディレクトリ以下に作成するファイル数は 5000以内 にとどめておいたほうがでしょう。

関連:

ファイル・ディレクトリ容量やディスクの空き容量を取得する

http://logic.moo.jp/memo.php/archive/97/

No.336
05/08 15:48

edit

ファイル

alias を使ってコマンドの別名を設定する

例えば一般的に

【ll】というコマンドは【ls -l】のエイリアスであることが多い。

この設定をするのが

alias

とすると現在設定されているエイリアスの一覧を表示する。

エイリアスを設定するには

alias ll='ls -la --color=tty'

とする(bashの場合)

これで【ll】が【ls -la --color=tty】に変更される。

No.277
04/19 12:18

edit

ファイル

バックアップコマンド rsync

外部サーバにバックアップをとるコマンド rsync

あらかじめ外部サーバに ssh でパスワード無しで接続できるよう設定しておく必要がある。

(SSHをパスワード無しで接続する↓)

http://logic.moo.jp/memo.php/archive/250

rsync コマンド例

rsync -avzL --delete -e ssh  /home/mydata  user@hostname.com:/var/www/backup

バックアップ元サーバの【/home/mydata】以下を全て

バックアップ先サーバ(user@hostname.com)の【/var/www/backup】以下に

バックアップを作成する。

  • a    :全てのデータをコピーする
  • v    :転送状態を表示する
  • z    :圧縮して転送します
  • L    :(シンボリックリンクを解決して)リンク先のファイルを転送する
    • delete :バックアップ元で削除されたファイルはバックアップ先でも削除する
  • e ssh  :sshを使って転送する

(参考)

http://www.infoscience.co.jp/technical/rsync/rsync.html

No.252
11/30 17:39

edit

ファイル

ファイル・ディレクトリ容量やディスクの空き容量を取得する【du】【df】

■ ファイルやディレクトリ容量を表示させるには

du -h ディレクトリ名
du -h -s ディレクトリ名(指定したディレクトリのみ表示)
du -h -a  ディレクトリ名(一覧表示)

容量の大きいディレクトリを発見するにはルートディレクトリから grep で

# ギガバイト以上のディレクトリを表示
du -h | grep [0-9]G
# 100Mバイト以上のディレクトリを表示
du -h | grep [0-9][0-9][0-9]M

とするのもいいかもしれません

■ ちなみにディスク全体のの残り容量を表示するコマンドは

df -hT

です。

■ ディスク容量の残りが少なくなってきたときにチェックするとよいディレクトリ

/home
/usr
/var/lib/mysql
/var/lib/pgsql
/var/spool/mail
/root/Maildir

等です。

No.97
08/18 09:27

edit

ファイル

findによる再帰検索

※カレントディレクトリ以下の .htmlファイルを再帰的に【test】で検索するには

 find . | grep .html$ | xargs grep -l 'test'

と記述します。

No.43
03/15 16:04

edit

ファイル