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

findとgrepによる再帰検索

● grepによる再帰検索

拡張子 .ts と .tsx ファイルを 文字列 foobar で検索 (カレントディレクトリ ./ 以下)

grep -rnw './' -e 'foobar' --include=\*.{tsx,ts}

● findとgrepによる再帰検索

再帰的に文字列【onClick】でカレントディレクトリ以下の全ての【拡張子 .tsxファイル】を検索するには

find . -name "*.tsx" -print0 | xargs -0 grep 'onClick'

とやります。

拡張子 による絞り込みが不要の場合は、以下のようにしてもokです

grep -r 'onClick'  .
No.43
02/27 14:05

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

です。

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

真っ先にチェックすべきはこのディレクトリです

/var/log/

ブルートフォースアタック(総当たり攻撃)を受けている場合ログのサイズが飛躍的に大きくなっていますのでログサイズが大きい場合はどういうアタックがされているのかも合わせてチェックすると良いでしょう。

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

等です。

● yum の キャッシュを削除する

まずはyumキャッシュの要領を確認

du -sh /var/cache/yum/

キャッシュの削除

sudo yum clean all

● composer のキャッシュを削除する

(rootユーザからは実行できません)

composer clear-cache

● MySQL の InnoDB の肥大化を確認する

https://bit.ly/34EXFmR

No.97
10/14 12:36

edit

ファイル

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】

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

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

● colordiffのインストール

Linuxの場合 : インストールは yumコマンド一発

yum install colordiff

Mac OSの場合 : インストールは brewコマンド一発

brew 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
08/12 10:13

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コマンド

macやunixのターミナルであるディレクトリ以下の合計ファイル数を知るには

● 合計ファイル数:

ls -laR | grep -c '^-'

● 合計ディレクトリ数:

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

でいけます。

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

関連: ファイル・ディレクトリ容量やディスクの空き容量を取得する http://logic.moo.jp/memo.php/archive/97/

No.336
06/27 11:59

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をパスワード無しで接続する↓) https://pgmemo.tokyo/data/archives/250.html

rsync コマンド例

自分のサーバのディレクトリを hostname.com サーバにバックアップを取る

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

.ssh/config に設定してあるホスト myhost の /home/myuser/tmp/ → ローカルのMacの ~/Downloads/tmp/ にバックアップを取る

rsync -avz  --delete myhost:/home/myuser/tmp/ ~/Downloads/tmp/
バックアップ元サーバの【/home/mydata】以下を全て
バックアップ先サーバ(user@hostname.com)の【/var/www/backup】以下に
バックアップを作成する。
-a    :全てのデータをコピーする
-v    :転送状態を表示する
-z    :圧縮して転送します
-L    :(シンボリックリンクを解決して)リンク先のファイルを転送する
--delete :バックアップ元で削除されたファイルはバックアップ先でも削除する
-e ssh  :sshを使って転送する
No.252
04/15 11:24

edit

ファイル