find :在指定的路径下查找指定文件…

本文详细介绍了Linux下的find命令的使用方法,包括各种查找选项如按文件名、用户、组、文件类型等查找,以及如何结合-exec和-ok选项执行命令。通过多个实例展示了find命令的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、功能说明
find命令用来在指定的路径下查找指定的文件。其格式如下:
find path-name [-options] [-print -exec -ok 命令 { } \ ;]
path-name:find命令查找的目录路径,例如可以用“.”表示当前目录,用“\”表示系统根目录。

-options:find命令的这个选项主要用来控制搜索的方式。下面列出“-options”选项常见的几个格式:
-name ‘字串’:查找文件名匹配所给字串的所有文件,字串内可用通配符*、?、[]
-lname ‘字串’:查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符*、?、[]
-gid n:查找属于ID号为n的用户组的所有文件
-uid n:查找属于ID号为n的用户的所有文件
-empty:查找大小为0的文件或目录
-path ‘字串’:查找路劲发名匹配所给字串的所有文件,字串内可用通配符*、?、[]
-group ‘字串’:查找属于用户组名为所给字串的所有文件
-depth:在查找文件时,首先查找当前目录下的文件,然后在查找其子目录下的文件
-prune 目录:指出搜索时不搜索该目录。如果同时使用-depth选项,那么-prune选项将被find命令忽略
-size n:查找文件长度为n块的文件,带有c时表示文件长度以字节计
-user ‘字串’:查找属于用户名为所给字串的所有的文件
-mtime  +n或-n:按时间搜索,+n表示n天之前的,-n表示今天到n天前之间的
-type 文件类型:按指定文件类型搜索。文件类型包括b(块设备文件)、c(字符设备文件)、f(普通文件)、l(符号链接)、d(目录)、p(管道)、s(socket文件)

-print:搜索结果输出到标准输出。
-exec:对搜索出符合条件的文件执行所给出的Linux命令,而不询问用户是否需要执行该命令。{ }表示shell命令的选项即为所查找到的文件。命令的末尾必须以“;”结束。【注意:“-exec 命令 {}  \;”,在 } 和 \ 之间有空格隔开】
-ok:对搜索出符合条件的文件执行所给出的Linux命令。与-exec不同的是,它会询问用户是否需要执行该命令。

2、举例
(1)在系统根目录下,查找文件为普通文件,属于student用户的,2天以前的,并且查找时不包含/usr/bin目录的文件名为main.c的文件,并将结果输出到屏幕:
find / -path "/usr/bin" -prune -o -name "main.c" -user student -type f -mtime +2 -print
(2)对上例中搜索的结果进行删除操作:
find / -path "/usr/bin" -prune -o -name "main.c" -user student -type f -mtime +2 -print -exec rm {} \;
(3)查找系统中所有大小为0的普通文件,并列出它们的完整路径:
find / -type f -size 0 -exec ls -al {} \;
(4)查找系统/var/logs目录中修改时间在7天以前的普通文件,然后以交互方式删除:
find /var/logs -type f -mtime +7 -ok rm {} \;
(5)在当前目录及子目录下查找所有“*.txt”的文件:
find . -name "*.txt" -print
(6)在用户自己的根目录下查找文件名以一个大写字母开头,紧接着是一个小写字母和两个数字,最后以“*.txt”结尾的文件:
find ~ -name "[A-Z] [a-z] [0-9] [0-9]*.txt"
(7)在/etc目录下查找文件属主为student用户的文件:
find /etc -user student -print

import requests from bs4 import BeautifulSoup import os import re from urllib.parse import urljoin # 定义关键词列表 KEYWORDS = [""] def sanitize_text(text): """增强型文本清洗""" # 去除HTML标签 text = re.sub(r'<[^>]+>', '', text) # 去除URL链接 text = re.sub(r'https?://\S+', '', text) # 替换HTML实体 replacements = { ' ': ' ', '&': '&', '"': '"', '<': '<', '>': '>' } for k, v in replacements.items(): text = text.replace(k, v) # 清理特殊符号 text = re.sub(r'[■◆▼©®™●【】]', '', text) # 规范化空格 text = re.sub(r'\s+', ' ', text).strip() return text def save_content(url, desktop_path): """安全获取并保存网页内容""" try: headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'} response = requests.get(url, headers=headers, timeout=10) response.encoding = 'utf-8' if response.status_code == 200: soup = BeautifulSoup(response.text, 'html.parser') main_content = soup.find(['article', 'div'], class_=re.compile(r'content|main')) clean_text = sanitize_text(main_content.get_text() if main_content else soup.get_text()) # 生成安全文件名 filename = re.sub(r'[\\/*?:"<>|]', '', url.split('/')[-1])[:50] + '.txt' filepath = os.path.join(desktop_path, filename) with open(filepath, 'w', encoding='utf-8') as f: f.write(clean_text) print(f'成功保存: {filename}') else: print(f'访问失败: {url} 状态码: {response.status_code}') except Exception as e: print(f'处理{url}时出错: {str(e)}') def main(): """主程序""" # 获取桌面路径(跨平台) desktop = os.path.join(os.path.expanduser('~'), 'Desktop') # 模拟种子页面(需合法授权后替换实际目标网站) seed_url = "http://www.81.cn/" # 示例地址 try: res = requests.get(seed_url, timeout=10) soup = BeautifulSoup(res.text, 'html.parser') # 提取包含关键词的链接 links = [] for a in soup.find_all('a', href=True): text = a.get_text().strip() if any(keyword in text for keyword in KEYWORDS): absolute_url = urljoin(seed_url, a['href']) links.append(absolute_url) # 去重处理 unique_links = list(set(links)) # 保存内容(建议控制频率) for link in unique_links[:9]: # 示例仅处理前5条 save_content(link, desktop) except Exception as e: print(f'程序终止: {str(e)}') if __name__ == "__main__": main() 在上述代码基础上将所有输出的txt保存在桌面的一个新的文件夹中,给出完整代码
03-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值