ホームページ >運用・保守 >Linuxの運用と保守 >Linuxのfindコマンドの使い方
Linux では、find コマンドは指定したディレクトリ内のファイルを検索するために使用され、基本的な構文は「find path -option..」です。パラメータの前の文字列は、検索対象のディレクトリ名とみなされます。パラメータを設定せずにこのコマンドを使用すると、find コマンドは現在のディレクトリ内のサブディレクトリとファイルを検索します。
#このチュートリアルの動作環境: Red Hat Enterprise Linux 6.1 システム、Dell G3 コンピューター。
Linux find コマンドは、指定されたディレクトリ内のファイルを検索するために使用されます。
find path -option 【 -print 】 【 -exec -ok |xargs |grep 】 【 command {} \; 】
find コマンド パラメータ:
1)path: 検索するディレクトリのパス。
2 ) print: 結果を標準出力に出力することを示します。
3) exec: 一致するファイルに対してこのパラメータで指定されたシェル コマンドを実行します。
形式はコマンド {} \;, {} と \; の間にはスペースがあることに注意してください;
4) ok: has exec と同じ効果、
違いは、コマンドを実行する前に、ユーザーに実行するかどうかを確認するプロンプトが表示されることです
5)|xargs exec と同じ機能を持ち、後継として機能します
違いは、|xargs は主に削除操作を実行するために使用されるのに対し、 -exec は削除操作を実行できることです。コピー、移動、名前変更などに使用されます。
6)options : 検索方法を示します
options 一般的に使用されるオプションには、次のオプションがあります:
-name filename #查找名为filename的文件 -perm #按执行权限来查找 -user username #按文件属主来查找 -group groupname #按组来查找 -mtime -n +n #按文件 更改时间 来查找文件,-n指n天以内,+n指n天以前 -atime -n +n #按文件 访问时间 来查找文件,-n指n天以内,+n指n天以前 -ctime -n +n #按文件 创建时间 来查找文件,-n指n天以内,+n指n天以前 -nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在 -nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存 -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件 -size n[c] #查长度为n块[或n字节]的文件 -mount #查文件时不跨越文件系统mount点 -follow #如果遇到符号链接文件,就跟踪链接所指的文件 -prune #忽略某个目录
パラメータの前の任意の文字列が検索対象のディレクトリ名とみなされます。パラメータを何も設定せずにこのコマンドを使用すると、find コマンドは現在のディレクトリ内のサブディレクトリとファイルを検索します。見つかったすべてのサブディレクトリとファイルが表示されます。
find の一般的な使用法を紹介する簡単な例をいくつか示します。
1. 名前で検索します
現在のディレクトリとサブディレクトリで、大文字を検索します。文字で始まる txt ファイル
##
$ find . -name '[A-Z]*.txt' -print/etc とそのサブディレクトリで、host
$ find /etc -name 'host*' -printで始まるファイルを検索します。 $HOME ディレクトリとそのサブディレクトリで、すべてのファイルを検索します。
$ find ~ -name '*' -print現在のディレクトリとサブディレクトリで、out で始まらない txt ファイルを検索します。
$ find . -name "out*" -prune -o -name "*.txt" -print2. ディレクトリによる検索 aa
$ find . -path "./aa" -prune -o -name "*.txt" -printを除く現在のディレクトリのサブディレクトリ内の txt ファイルを検索します。 現在のディレクトリ内で検索します。 aa と bb 以外のサブディレクトリにある txt ファイルの場合
#
$ find . \( -path './dir0' -o -path './dir1' \) -a -prune -o -name '*.txt' -print
注: 1 と 2 の両方で必須です。スペースを追加します。それ以外の場合は、スペースを追加してください。図に示すようにエラーが表示されます。
-a を追加せずに、3 か所に -a を追加できます。 サブディレクトリではなく、現在のディレクトリに、 txt ファイルの検索
$ find . ! -name "." -type d -prune -o -type f -name "*.txt" -print
または
find . -name *.txt -type f -printフレンドリー リンク: Linux での find コマンド -path -prune の使用法の詳細な説明3. 権限による検索 現在のディレクトリとサブディレクトリで、所有者が読み取り/書き込み実行権限を持つファイルと、読み取り/書き込み実行権限を持つその他のファイルを検索します
$find . -perm 755 -printユーザーが書き込み権限を持つファイルを検索する権限、またはグループ ユーザーが書き込み権限を持つファイルまたはディレクトリを検索します
find ./ -perm /220 find ./ -perm /u+w,g+w find ./ -perm /u=w,g=w4. タイプで検索します (b/d/c/p/l/f) 現在のディレクトリとサブディレクトリで、シンボリック リンク ファイルを検索します。
$ find . -type l -print5. 所有者およびグループごとに
所有者のファイルを検索します。 www
$ find / -user www -type f -print属性の検索 主な削除ファイル
$ find / -nouser -type f -printグループ mysql に属するファイルの検索
$ find / -group mysql -type f -printユーザー グループ
の削除ファイルの検索
$ find / -nogroup -type f -print
6. 時刻による検索
2 日以内に変更されたファイルの検索
$ find . -mtime -2 -type f -print変更されたファイルの検索 2数日前
$ find . -mtime +2 -type f -print1 日以内にアクセスされたファイルを検索します
$ find . -atime -1 -type f -print1 日前にアクセスされたファイルを検索します
$ find . -atime +1 -type f -print次のファイルを検索しますステータスが 1 日以内に変更されました
$ find . -ctime -1 -type f -print1 日前にステータスが変更されたファイルを検索します
$ find . -ctime +1 -type f -print
查找10分钟以前状态被改变的文件
$ find . -cmin +10 -type f -print
7、按文件新旧
查找比 aa.txt 新的文件
$ find . -newer "aa.txt" -type f -print
查找比 aa.txt 旧的文件
$ find . ! -newer "aa.txt" -type f -print
查找比aa.txt新,比bb.txt旧的文件
$ find . -newer 'aa.txt' ! -newer 'bb.txt' -type f -print
8、按大小查找
查找超过1M的文件
$ find / -size +1M -type f -print
查找等于6字节的文件
$ find . -size 6c -print
查找小于32k的文件
$ find . -size -32k -print
9、执行命令
1)查找 del.txt 并删除,删除前提示确认
$ find . -name 'del.txt' -ok rm {} \;
2) 查找 aa.txt 并备份为aa.txt.bak
$ find . -name 'aa.txt' -exec cp {} {}.bak \;
3)查当前目录下的所有普通文件
# find . -type f -exec ls -l {} \; -rw-r–r– 1 root root 34928 2003-02-25 ./conf/httpd.conf -rw-r–r– 1 root root 12959 2003-02-25 ./conf/magic -rw-r–r– 1 root root 180 2003-02-25 ./conf.d/README
查当前目录下的所有普通文件,并在 - exec 选项中使用 ls -l 命令将它们列出
4)在 /logs 目录中查找更改时间在5日以前的文件并删除它们
$ find logs -type f -mtime +5 -exec -ok rm {} \;
5)查询当天修改过的文件
# find ./ -mtime -1 -type f -exec ls -l {} \;
6)查询文件并询问是否要显示
# find ./ -mtime -1 -type f -ok ls -l {} \; < ls … ./classDB.inc.php > ? y -rw-r–r– 1 cnscn cnscn 13709 1月 12 12:22 ./classDB.inc.php # find ./ -mtime -1 -type f -ok ls -l {} \; < ls … ./classDB.inc.php > ? n
关于 有没有 -print 的区别
加 -print
查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,没有选项-print时文件列表前一行不会显示目录名称)
find /home -type d -print -exec ls {} \;
不加 -print
相关推荐:《Linux视频教程》
以上がLinuxのfindコマンドの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。