在linux下我们往往需要查找文件或查找文件下的内容,可以使用find和grep命令
先从入门开始
入门便捷使用
如我要在一个目录下查找所有路径中带有user的目录或文件,我只要
find . -name "user*"
./user-ops
./user-ops/target/user-ops-0.1.jar.original
./user-ops/target/user-ops-0.1-sources.jar
./user-ops/target/user-ops-0.1.jar
./user-transfer
./user-transfer/user-transfer.iml
这里就表示在当前目录及子目录下匹配user打头的文件或目录
grep 命令则是查看文件中的具体内容,比如我们要看文件里哪里用了某个变量
wujingcideMacBook-Pro:user-group wujingci$ grep -rni instagramID *
service/src/main/java/net/vickymedia/user/rest/UserCompositeRestController.java:1429: UserUpdater uu = UserUpdater.builder().userId(userId).instagramID(insName).build();
mus-user-composite-service/src/main/java/net/vickymedia/user/rest/UserCompositeRestController.java:1531: UserUpdater uu = UserUpdater.builder().userId(userId).instagramID("").build();
查找到了文件,这里的-rni中的r表示搜索子目录,n表示显示行数,i表示忽略大小写
高级
其实这两个命令支持很多高级用法
比如find我们可以依据修改时间来找
atime(access time),文件最后被访问时间
ctime(change time),文件本身最后被变更的时间,变更动作可以使chmod, chgrp, mv等
mtime(modify time),文件内容最后被修改的时间,修改动作可以是echo,vi等
除了固定时间还可以用-newer,-nonewer把一个文件的修改时间作为基准,查找前后更改的文件
还有-group, -nogroup,-user指定用户组和用户
-size,-type来指定大小和类型
举个例子,我要找当前目录下
1. 改动不超过12小时的
2. 大小大于10k的
3. py文件
wujingcideMacBook-Pro:aweme wujingci$ find . -name "*py" -type f -size +1k -ctime -12h
./user/user/dao/user.py
./user/user/method/ban_user.py
./user/user/method/update_user.py
./user/service_user_pyrpc/thrift_gen/aweme/user/AwemeUserService.py
./user/service_user_pyrpc/thrift_gen/aweme/user/ttypes.py
./common/rpc_gen/common_rpc_gen_pyrpc/thrift_gen/aweme/user/AwemeUserService.py
./common/rpc_gen/common_rpc_gen_pyrpc/thrift_gen/aweme/user/ttypes.py
grep命令也有很多高级用法
比如加色彩 –color
-q指定只查找到一个就停止,-m为指定查找数量
比如我要查找uniq_id_modify_time这个变量,并在5处打桩
要找到正好5个文件,标出行号,忽略大小写:
wujingcideMacBook-Pro:aweme wujingci$ grep -rni -m 5 uniq_id_modify_time --color *
api/v1/model/user_update.py:146: 'uniq_id_modify_time': user.UniqueIdModifyTime,
aweme_scripts/sync_musically_tiktok/handler.py:112: # apple_account = uniq_id_modify_time = None
aweme_scripts/sync_musically_tiktok/handler.py:133: # 整理改动时注意将uniq_id_modify_time丢到extra里面
aweme_scripts/sync_musically_tiktok/handler.py:147: uniq_id_modify_time = data.get('user').get('handle_modified')
aweme_scripts/sync_musically_tiktok/handler.py:150: ins_id = google_account = youtube_channel_id = youtube_channel_title = apple_account = uniq_id_modify_time = None