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
$ find /etc -name 'host*' -print
$ find ~ -name '*' -print
$ find . -name "out*" -prune -o -name "*.txt" -print
$ find . -path "./aa" -prune -o -name "*.txt" -print
#
$ 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
$find . -perm 755 -print
find ./ -perm /220 find ./ -perm /u+w,g+w find ./ -perm /u=w,g=w
$ find . -type l -print
所有者のファイルを検索します。 www
$ find / -user www -type f -print
$ find / -nouser -type f -print
$ find / -group mysql -type f -print
の削除ファイルの検索
$ find / -nogroup -type f -print
6. 時刻による検索
2 日以内に変更されたファイルの検索
$ find . -mtime -2 -type f -print
$ find . -mtime +2 -type f -print
$ find . -atime -1 -type f -print
$ find . -atime +1 -type f -print
$ find . -ctime -1 -type f -print
$ 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 サイトの他の関連記事を参照してください。