【find】Linuxコマンド_ファイル・ディレクトリを検索する

LinuxOSにおいて、ファイルシステムの中からファイルを検索する場合は「find」コマンドを使用します。

「find」コマンドの使い方(Linux)

ホームディレクトリはいかにある「test.txt」と言う名前のファイルを検索します。
以下では、ユーザー権限での検索時と管理者(root)権限での検索時の例となります。

ユーザー権限

ユーザー権限において、「~」以下の全てのファイルとディレクトリを指定した条件で検索します。
出力結果により、「test.txt」のパスが表示されます。

$ find ~ -name test.txt
/home/test/test.txt

管理者(root)権限

管理者(root)権限において、「/」以下の全てのファイルとディレクトリを指定した条件で検索します。
出力結果により、2つの「test.txt」のパスが表示されます。

$ find / -name test.txt
/tmp/test/test.txt
/home/test/test.txt

ファイルのオーナー名で検索

検索条件をファイルのオーナー名を指定します。オプションは「-user」を使用します。
以下では、オーナー名「test」となるファイルを検索した結果となります。

$ find -user test
.
./.bash_profile
./test.txt
./.bash_logout
./.bashrc
./.bash_history
$ 

更新時刻でファイルを検索

検索条件を更新時刻で検索する場合は「-mtime n」を使用します。
以下では、1日前に更新されたファイルを検索するコマンドとなります。

$ find / -mtime 1
/var/spool/anacron/cron.weekly
/var/log/audit/audit.log.3
/var/log/audit/audit.log.4
・
・
・

「*(アスタリスク)」を利用したファイル検索

アスタリスク「*」を使用して、完全なファイル一致でなくても一部の文字列でファイルを検索することができます。

以下では「test0〜」と言う、一部の文字列をファイル検索した例となります。

$ find / -name test0*
/tmp/testdir/test03.txt
/tmp/testdir/test02.txt

上記のように「test02.txt」、「test03.txt」が検索結果で表示されました。

「-exec」オプションを使用し、検索と同時にコマンドを実行

「-exec」オプションを使用することで、検索結果のファイルを別コマンドの引数として実行することができます。
以下では、検索と同時に対象のファイルに対して削除「rm」コマンドを実行した結果となります。

検索で該当ディレクトリに「test01.txt」があることが確認できます。

$ find / -name test01.txt
/tmp/testdir/test01.txt

「-exec」オプションを付け、同時に削除を実行します。

$ find / -name test01.txt -exec /bin/rm {} \;

該当ディレクトリに移動し、ファイルが削除されたことが確認できます。

$ cd /tmp/testdir/
$ ls -l
合計 0
-rw-r--r-- 1 root root 0 11月  8 10:16 test02.txt
-rw-r--r-- 1 root root 0 11月  8 10:16 test03.txt

「find」コマンドオプション

「find」コマンドのオプションは以下の通りとなります。

$ find --help
使用法: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

デフォルトのパスはカレントディレクトリです。デフォルトの評価式 (expression) は -print です。評価式は演算子、オプション、テストおよびアクションで構成されます。

演算子 (優先順位は降順です。特に指定がない場合は -and が暗黙的に使用されます):
      ( EXPR )   ! EXPR   -not EXPR   EXPR1 -a EXPR2   EXPR1 -and EXPR2
      EXPR1 -o EXPR2   EXPR1 -or EXPR2   EXPR1 , EXPR2

positional options (always true): -daystart -follow -regextype

normal options (always true, specified before other expressions):
      -depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf
      --version -xautofs -xdev -ignore_readdir_race -noignore_readdir_race

テスト (N は +N、-N または Nで指定します): -amin N -anewer FILE -atime N -cmin N
      -cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME
      -ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN
      -links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE
      -nouser -nogroup -path PATTERN -perm [-/]MODE -regex PATTERN
      -readable -writable -executable
      -wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N
      -used N -user NAME -xtype [bcdpfls]
      -context CONTEXT


アクション: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print 
      -fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit
      -exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;
      -execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;

バグを発見した場合は findutils バグ報告ページ http://savannah.gnu.org/ を
使用して報告 (および修正の進捗を追跡) してください。Web を利用できない場合
は <bug-findutils@gnu.org> に E-mail を送ってください。

「find」コマンドの使い方は以上となります。

エンジニアのオンライン学習

エンジニアにおすすめのオンライン教材比較
ITエンジニアが自宅で学習ができるオンラインスクール比較

エンジニアのおすすめ学習「Progate」と「Udemy」比較

VPS_比較
最新情報をチェックしよう!