makoto_blog

パパさん_blog

プログラミング勉強メモや雑記など。

Linux ファイルの操作

ファイルの検索

locate

locate ファイル名パタン

メタキャラクタを使う時は引用符で囲む。

locate '*.txt'

試してみてほほうなるほどね。なんだけどその前にこれめっちゃ検索速くないですか。

grepを使った絞り込み例

locate hosts | grep '^/etc'

locateコマンドはリアルタイム検索ではないのか。
作成済ファイル名データベースを検索している。

ファイル名データベースの更新は、rootユーザーでupdatedbコマンド。
updatedbコマンドは定期的に実行されているようだ。

find

リアルタイムでいろいろな条件で検索できる。

find 検索対象パス 検索式

検索式

  • -name
  • -size
  • atime:ファイルの最終アクセス日を指定(3:3日前、+3:3日以上前、-3:3日以内)
  • -amin:ファイルの最終アクセス時刻を○分前で指定
  • -mtime:ファイルの最終修正日を指定
  • -mmin:ファイルの最終更新時刻を○分前で指定
  • -perm:ファイルのアクセス権を指定(664(rw-rw-r--)、+444(少なくとも全ユーザーが読み取り出来る))
  • -type:ファイルタイプを指定(f:ファイル、d:ディレクトリ、l:シンボリックリンク

/binディレクトリからファイル名がcで始まるファイルを検索

mhaya@mhaya-V5-131:~$ find /bin -name "c*"
/bin/chmod
/bin/cat
/bin/chown
/bin/chacl
/bin/cp
/bin/chgrp
/bin/cpio
/bin/chvt

カレントディレクトリ以下から、ファイルサイズが10KB以下で、最終アクセスが1分以内のファイルを検索

mhaya@mhaya-V5-131:~$ find -size -10k -amin -1

検索したファイルに対してコマンドを実行

find 検索対象パス 検索式 -exec 実行コマンド {} \;

検索結果のファイルを削除できる。
360日以上アクセスされていないファイルを削除

find -atime +360 -exec rm {} \;