本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议.
这篇博文这两天写好了, 由于最近比较忙, 所以提前发了, 希望Deadline不要延期.
find命令
find命令用于在一个目录(及子目录)中搜索文件, 可以指定匹配条件, 如文件名, 文件类型
在Mac下有强大的Spotlight和Alfred(感觉window下的everything更牛叉), 所以find用的就比较少了
1
|
find [-H | -L | -P] [-EXdsx] [-f path] path
... [expression]
|
常用形式为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# path表示
find命令查找的目录路径
$
find [path] [expression]
# 查找当前路径下的所有git为前缀的文件, 这里*被称为通配符
find . -name
'git*'
# 查找当前路径下所有以.txt和.pdf为后缀的文件
$
find . \( -name
"*.txt" -
o -name
"*.pdf" \) -
print
# !表示否则, 查找所有不是以.txt为后缀的文件
$
find . ! -name
"*.txt" -
print
# 按类型搜索, 只所有目录(
f表示文件
l表示符号链接(软链接)
d表示目录)
$
find . -
type
d -
print
# 按用户搜索 找到所有andrew_liu的用户文件
$
find . -
type
f -user andrew_liu -
print
# 按照时间搜索 -atime -
30
m 搜索
30分钟内被访问的文件(后面有详细解释)
$
find . -atime -
30
m -
type
f -
print
# -atime +
30
m 搜索超过
30分钟被访问的文件
$
find . -atime +
30
m -
type
f -
print
# 找到以.txt为后缀的文件后删除
$
find . -
type
f -name
"*.txt" -
delete
|
按时间搜索(这些元数据都在inode的结构体中有记录)
- atime 访问时间 (单位有一周w, 一天d, 一小时h, 一分钟m, 一秒s, 以下类似)
- mtime 修改时间 (内容被修改)
- ctime 变化时间 (元数据或权限变化)
grep命令
grep命令是强大的文本搜索命令
- grep全称是
globally search a regular expression and print
, 表示全局正则表达式
匹配并输出, 它的使用权限是所有用户
- 存在很多grep的修改版, 例如agrep表示
近似的grep
approximate grep用于模糊字符串搜索, fgrep用于固定样式搜索
fixed pattern searches, 而egrep用于搜索更复杂的正则表达式
语法(摘自wiki)
使用格式: grep [options] match_patten file
option
这里值列举几个常用的选项, 其他可以使用man grep
进行查看
-
-c
:只输出匹配行的次数 -
-l
:查询多文件时只输出包含匹配字符的文件名 -
-n
:显示匹配行及行号 -
-v
:显示不匹配行 -
-i
:搜索时忽略大小写 -
-l
:只打印包含匹配行的文件名 -
-e
:指明一个查找模式(常用多一次匹配多个查找模式) -
-R
:递归的查找多级目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
$ grep
'hello' test.doc
$ grep -n
'hello' test.doc
$ grep -v -e
'hel' -e
'how' test.doc
$ grep
"class" . -
R -n
./test/
class.c:1:class
./test/
class.c:2:class yes
./test/
class.c:4:class fuck
./test.
doc:
5
:class
./test.
pdf:
1
:class
$ cat test.doc | grep
'^\.hel'
cat test.doc | grep -c
'hel'
$ man grep
|
关于正则表达式的学习可以看Python正则表达式
xargs命令
- xargs 能够将输入数据转化为特定命令的命令行参数,可以配合很多命令来组合使用
- 经常和find, grep通过管道连接使用
xargs参数说明
-
-d
定义定界符 (默认为空格 多行的定界符为 n) -
-n
指定输出为多行 -
-I
{} 指定替换字符串,这个字符串在xargs扩展时会被替换掉,用于- `待执行的命令需要多个参数时 -
-0
:指定0为输入定界符
1
2
3
4
5
6
7
8
9
10
|
$ cat test.doc|xargs
$ cat
new.pdf| xargs -n
5
Here you can select
if
you want
to
set
the
gesture
for Magic Mouse
or
for
the Trackpad
or
for
the Keyboard
|
其他常用小命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# 清空文件
$ :> a.txt
# 将文本中的制表符转换为空格
$ cat text| tr
'\t'
' '
# 统计行数, 常用统计整个项目的代码量
$ wc -l file
# 打包当前文件夹(不压缩), -c为打包选项, -v为显示打包进度, -f为使用档案文件
$ tar -cvf test.tar ./
# 解包 -x为解包选项
$ tar -xvf test.tar
# 压缩文件, 生成文件为.gz后缀
$ gzip test.tar
# 解压缩文件, 解压为test.tar
$ gzip test.tar.gz
# 查看端口占用的进程状态
$ lsof -i:
5000
# 端口号被占用:
$ sudo netstat -tulpn | grep
80
$ sudo netstat -aWn --programs | grep
80
# 查询被监听的端口
$ lsof -i tcp | grep LISTEN
# 通过PID进程号杀死进程
$ sudo kill -s (PID)
# DNS查询,寻找域名domain对应的IP
$ host andrewliu.tk
andrewliu.tk has address
103.245
.222
.133
# SSH登陆:
$ ssh username@host
# ftp/sftp文件传输(重要)
$ sftp username@host
# 远程文件复制, scp -r 要复制的整个目录 username@host:目的目录
$ $scp localpath ID@host:path
$ scp -r MonitorTrend bin_liu@
10.64
.24
.91:Flask
# 添加新的用户和密码
$ useradd -m username
$ passwd username
# 删除用户
$ userdel -r username
# 不同用户之间切换
$ su userB
|