>  기사  >  운영 및 유지보수  >  Linux에서 파일 검색 명령 찾기

Linux에서 파일 검색 명령 찾기

齐天大圣
齐天大圣원래의
2020-06-04 09:53:03103검색

find 명령은 제가 가장 좋아하는 명령 중 하나입니다. 파일 이름, 파일 크기, 파일 형식 등 다양한 검색 방법을 지원할 수 있습니다. 다음으로 살펴보겠습니다.

구문: ​​find [검색 경로] [옵션] [동작]

find 명령에 너무 많은 옵션을 사용하지 마세요. 오늘은 일반적으로 사용되는 몇 가지 옵션에 대해서만 이야기하겠습니다.

파일 이름으로 검색

파일 이름으로 검색하는 옵션은 -name으로, 단순 일반 검색을 지원합니다.

예를 들어, locale.conf가 /etc 디렉터리에 저장되어 있다는 것을 알고 있지만 특정 경로를 잊어버린 경우

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

가 해당 파일의 특정 경로를 알아낼 수 있습니다.

이제 특정 디렉토리에 몇 개의 PHP 파일이 있는지 알고 싶습니다. 다음 명령을 사용하여 완료할 수 있습니다.

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

또는 옵션 -o

여기에는 또는를 의미하는 또 다른 옵션인 -o가 있습니다. 일반적으로 기본적으로 찾기 옵션은 모두 and를 의미합니다. 특정 디렉토리에 있는 php 또는 js 파일의 총 개수를 찾는 예제를 살펴보겠습니다.

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

파일 형식 및 디렉터리 깊이를 기준으로 검색

파일 형식을 찾으려면 -type 옵션을 사용해야 합니다. 일반적으로 사용되는 형식은 f(파일) 및 d(디렉터리)입니다. 또 다른 옵션이 도입되었습니다. -maxlength는 최대 재귀 디렉터리 수를 나타냅니다.

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

부정 옵션!

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

시간 관련 조회

시간 관련 옵션: -atime, -ctime 및 -mtime이 있습니다. -mtime을 사용하여
-mtime n n을 숫자로 설명합니다. 이는 n일 전에 내용이 변경된 파일을 의미합니다.
-mtime +n list 파일 이름 n일 전에 내용이 변경되었습니다(n일 자체는 포함하지 않음)
-mtime -n 내용이 n일 이내에 변경된 파일 목록(n일 자체 포함) 파일 이름
-최신 파일 파일은 기존 파일입니다. 파일
보다 최신인 파일 이름을 나열하세요.

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

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

根据用户名、组来查找

与使用者或群组名称有关
-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에서 파일 검색 명령 찾기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.