Linuxのfindコマンドの使い方

青灯夜游
リリース: 2021-06-25 14:02:49
オリジナル
17651 人が閲覧しました

Linux では、find コマンドは指定したディレクトリ内のファイルを検索するために使用され、基本的な構文は「find path -option..」です。パラメータの前の文字列は、検索対象のディレクトリ名とみなされます。パラメータを設定せずにこのコマンドを使用すると、find コマンドは現在のディレクトリ内のサブディレクトリとファイルを検索します。

Linuxのfindコマンドの使い方

#このチュートリアルの動作環境: Red Hat Enterprise Linux 6.1 システム、Dell G3 コンピューター。

Linux find コマンドは、指定されたディレクトリ内のファイルを検索するために使用されます。

find コマンド形式:

find   path  -option  【 -print 】  【 -exec   -ok   |xargs  |grep  】 【  command  {} \;  】
ログイン後にコピー

find コマンド パラメータ:

1)path: 検索するディレクトリのパス。

  • ~ は $HOME ディレクトリ
  • を表します。 は現在のディレクトリを表します
  • / はルート ディレクトリ

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" -print
ログイン後にコピー

2. ディレクトリによる検索

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=w
ログイン後にコピー

4. タイプで検索します (b/d/c/p/l/f)

現在のディレクトリとサブディレクトリで、シンボリック リンク ファイルを検索します。


 $ find . -type l -print
ログイン後にコピー

5. 所有者およびグループごとに

所有者のファイルを検索します。 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 -print
ログイン後にコピー

1 日以内にアクセスされたファイルを検索します


$ find . -atime -1 -type f -print
ログイン後にコピー

1 日前にアクセスされたファイルを検索します

 $ find . -atime +1 -type f -print  
ログイン後にコピー

次のファイルを検索しますステータスが 1 日以内に変更されました

$ find . -ctime -1 -type f -print   
ログイン後にコピー

1 日前にステータスが変更されたファイルを検索します

$ 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート