ホームページ  >  記事  >  運用・保守  >  Linux のファイル検索コマンド find

Linux のファイル検索コマンド find

齐天大圣
齐天大圣オリジナル
2020-06-04 09:53:03151ブラウズ

find コマンドは、探しているファイルを簡単に見つけることができるコマンドの 1 つで、ファイル名、ファイル サイズ、ファイル タイプなどで検索できます。次に見てみましょう。

構文: find [検索パス] [オプション] [アクション]

find コマンドのオプションは多すぎないようにします。今日は、一般的に使用されるいくつかのオプションについてのみ説明します。

ファイル名で検索

ファイル名で検索するオプションは -name で、単純な通常の検索をサポートします。

たとえば、locale.conf が /etc ディレクトリに保存されていることは知っていますが、具体的なパスを忘れてしまった場合は、

# find /etc/ -name locale.conf/etc/locale.conf

でファイルの具体的なパスを見つけることができます。

ここで、特定のディレクトリにある php ファイルの数を知りたいので、次のコマンドを使用してそれを完了できます。

# find default -name *.php | wc -l122

またはオプション -o

ここに別のオプション -o があり、これは or を意味します。通常、デフォルトでは、検索オプションはすべて and を意味します。特定のディレクトリ内の php または js ファイルの総数を見つける例を見てみましょう。

# find default -name *.php -o -name *.js | wc -l225

ファイル タイプとディレクトリの深さに基づいて検索します

ファイル タイプを検索するには、-type オプションを使用する必要があります。一般的に使用されるタイプは f (ファイル) と d (ディレクトリ) です。別のオプションが導入され、-max Depth は再帰ディレクトリの最大数を示します。

# find ./  -maxdepth 1  -type d././default./default.bak

否定的なオプション!

# find ./  -maxdepth 1 ! -type f././default./default.bak

時間関連の検索

-mtime n -mtime +n -mtime -n-新しいファイル より新しいファイル名をリストします

  这个选项很有作用,比如进行数据定时备份时,只保留最近7天的数据,超过7天的自动删除就会用到该选项。注意+n表示n天之前,-n表示n天之内。

# find $bakdir -name "*.sql.bz2" -type f -mtime +7 -exec rm -rf {} \;

根据用户名、组来查找

時間関連のオプション: -atime、-ctime、-mtime があります。 -mtime を使用して
n を数値として説明します。これは、n 日前に内容が「1 日以内」に変更されたファイルを意味します
list内容が n 日前に変更されました (n 日自体は含まれません)
n 日以内に内容が変更されたファイルをリストします (n 日自体を含みます) ファイル名
ファイルは既存のファイルです。ファイル
与使用者或群组名称有关
-uid n   n 为数字,这个数字是使用者的帐号ID,亦即UID    
-gid n  n 为数字,这个数字是群组名称的ID,亦即GID    
-user name  name 为使用者帐号名称,例如dmtsai   
-group name  name 为群组名称,例如users ;    
-nouser 寻找文件的拥有者不存在 的人!    
-nogroup  寻找文件的拥有群组不存在于/etc/group 的文件!    

  查找某目录下,所有者不是www的文件有哪些。

find /home/wwwroot/default ! -user www | wc -l

根据文件大小查找

按文件大小查找使用-size选项,比如查找大于1M的文件,那么使用-size +1M,如果查找小于1K的,那么使用-size -1K

# find /home/wwwroot/default -size +1M
# find /home/wwwroot/default -size -1k

根据文件权限查找

  • -perm mode 搜寻文件权限『刚好等于』 mode 的文件,这个mode 为类似chmod的属性值,举例来说, -rwsr-xr-x 的属性为4755 !

  • -perm -mode    搜寻文件权限『必须要全部囊括mode 的权限』的文件,举例来说,我们要搜寻-rwxr--r-- ,亦即0744 的文件,使用-perm -0744,当一个文件的权限为-rwsr-xr-x ,亦即4755 时,也会被列出来,因为-rwsr-xr-x 的属性已经囊括了-rwxr--r-- 的属性了。    

  • -perm /mode    搜寻文件权限『包含任一mode 的权限』的文件,举例来说,我们搜寻-rwxr-xr-x ,亦即-perm /755 时,但一个文件属性为-rw-------也会被列出来,因为他有-rw.... 的属性存在!    

我们知道,文件的权限一般为644,目录的权限一般为755。如果,不是等于这个权限,可能就会有点问题,那么我们来找找看,是否有这类文件。

find /home/wwwroot/default ! -perm 644 -type d -exec ls -ld {} \;
# 查找权限不是644的文件,并将其修改为644
find /home/wwwroot/default ! -perm 644 -type f | xargs -n 10 chmod 644;

动作执行

其实这个命令上面已经使用到了,使用-exec选项,然后接命令,最后要以{} ;结尾,比如

find /home/wwwroot/default ! -perm 644 -type d -exec ls -ld {} \;

其他

find还支持正则(-regex)查找文件名,还可以不区分大小写(-iregex);

使用-empty可以查找文件大小为0的文件。

# find . -empty -exec ls -l {} \;

以上がLinux のファイル検索コマンド findの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。