Linux - 相关操作
linux中空白行相关操作:
Linux空白行:行号显示、空白行数统计、删除空白行
这里的空白行,泛指只有一个换行符的行。
统计空白行数:
可以对比下cat -b和cat -n输出中,最后一行的编号,两者之差即为空白行的行数,也可以使用grep命令:
grep '^$' count.sh | wc -l
删除空白行:
方法一: 使用grep命令
grep -v '^$' count.sh
方法二:使用tr命令
巧妙利用了squeeze-repeats选项,上一行的换行符和空白行的换行符缩减为一个换行符
cat count.sh |tr -s '\n'
方法三:使用sed命令
sed '/^$/d' count.sh
方法四:使用awk命令
主要是判断下,某一行是否为空,或者长度是否为0,如果是的话,就不要打印。
awk '{if($0!="")print}' count.sh awk '{if(length($0)!=0) print $0}' count.sh awk '!/^$/ {print $0}' count.sh awk 'length($0) > 0 {print $0}' count.sh awk 'BEGIN{RS="\n+";ORS="\n"}{print}' count.sh awk 'BEGIN{RS="\n+"}{print}' // 附:cat 的-s选项可以将多个空行squeeze成一个空行
linux中高效数据统计命令wc:
wc(world count)是一个统计文件字词,字节,行数的命令,它可以帮我们非常方便的统计以上信息。
常见参数如下:
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。注意,这里的字指的是由空格,换行符等分隔的字符串。
统计命令执行结果数量
实际上个人认为,最常用的还是-l参数,它用来统计文件或标准输出有多少行,那么实际上就可以用来做很多统计的事情了。
例如,统计当前目录下有多少个普通文件:
$ ls -l total 4
结果
-rw-rw-r-- 1 hyb hyb 0 3月 21 20:32 test2.txt -rw-rw-r-- 1 hyb hyb 13 3月 21 20:18 test.txt
$ ls -l |grep "^-"|wc -l
结果
2
可以得到文件数量为2。grep "^-"的意思是,获取哪些以-开头的行,因为普通文件都是以-开头的。
当然如果想统计包括子目录的总文件数量,可以加上-R参数:
ls -lR |grep "^-"|wc -l
再例如,查看chrome相关进程数量:
$ ps -ef|grep google|grep -v grep |wc -l
结果
23
类似这样的用法还有很多,只要你想统计都可以做。
这里再多说两句:
|是管道符,ls -l|wc -l表示将ls -l的结果传给wc命令处理
grep用于文本查找,grep "a",表明查找包含a的行,而grep -v "b",表明过滤包含b的行。
linux中查看磁盘与目录的容量:
df命令
// 命令 说明 df //列出所有文件系统,查看大小 df -h //以人们便于阅读的方式显示,大小显示为G,M,K df -h /etc //将 /etc 底下的可用的磁盘容量以易读的容量格式显示 df -ih //将目前各个 部分当中可用的 inode 数量列出
// # 统计文件夹下文件的个数,包括子文件夹里的 ls -lR /dev|grep "^-"|wc -l
linux中查看目录下文件及文件夹:
查看目录下文件及文件夹
ls -lR
长列表输出该目录下文件信息(R代表子目录注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)
grep "^-"
这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
wc -l
统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。
查看文件数量
统计某文件夹下文件的个数
ls -l |grep "^-"|wc -l
统计某文件夹下目录的个数
ls -l |grep "^d"|wc -l
统计文件夹下文件的个数,包括子文件夹里的
ls -lR|grep "^-"|wc -l
如统计/home/xxs目录(包含子目录)下的所有txt文件则:
ls -lR /home/xxs|grep js|wc -l 或 ls -l "/home/xxs"|grep "txt"|wc -l
统计文件夹下目录的个数,包括子文件夹里的
ls -lR|grep "^d"|wc -l
linux中Linux查看文件夹大小
查看当前文件夹大小
du -sh
统计当前文件夹(目录)大小,并按文件大小排序
du -sh * | sort -n
查看指定文件大小
du -sk filename
linux中comm命令用法:
comm命令功能: 选择或拒绝两个已排序的文件的公共的行。
comm命令语法:comm [-123] [--help][--version][file1][file2]
comm命令参数:
-1 不显示只在第1个文件里出现过的列。
-2 不显示只在第2个文件里出现过的列。
-3 不显示只在第1和第2个文件里出现过的列。
--help 在线帮助。
--version 显示版本信息。
comm命令比较两个已排序文件每行数据的差异,并将其结果显示出来,如果没有指定任何参数,comm命令读取这两个文件,然后生成三列输出:1>仅在file1中出现的行2>仅在file2中出现的行3>在两个文件中都存在的行。
如果为文件名之一指定 -(减号),则 comm 命令会从标准输入设备读取数据。
只显示file1独有的行:
//# 需要把第2列和第3列去掉: qingsong@db2a:/tmp$ comm -2 -3 file1 file2 //# 只显示file2独有的行: qingsong@db2a:/tmp$ comm -1 -3 file1 file2 //# 只显示两者重复的行: qingsong@db2a:/tmp$ comm -1 -2 file1 file2 //# 只显示两者不重复的行: //# 后面的sed是将以\t开头的\t去掉: qingsong@db2a:/tmp$ comm -3 file1 file2 | sed 's/^\t//'
linux多个文件同时拷贝:
linux下怎么样将一个文件夹中的多个文件同时拷贝到另一个文件夹.
cp file1 file2 file3 directory //即将文件file1 file2 file3复制到directory //可以使用通配符,比如 cp file? *File* other directory //将file开头后面一个字符、包含File字符的文件和other文件复制到directory //如果拷贝目录,需要-r参数: cp -r souredir destdir
显示所有的变量:
set
例子:
//5、思路:先用ls -l 查询到文件,然后再将其写入到文件中。 //# 进入到用户主目录 username cd /home/username //# 查询/dev下所有文件,并写入f1, “>>”,表示增量写入, “>”表示覆盖原有的写入 ls -l /dev >> f1 //# 结构后3行 ls -l /dev tail -3 >> f2 //# 比较两个文件,获取相同 comm -1 -2 f1 f2 >> f3 //# 将文件file1 file2复制到directory cp f1 f2 directory //# 使用truncate截断 -s 0选项将文件大小设置为零。 truncate -s 0 //# 统计grep命令手册中空行数量 $: 表示字符串结束。 count.sh是grep命令手册所在位置,要替换 grep '^$' count.sh | wc -l //例如,要清空Nginx访问日志,您可以使用: sudo truncate -s 0 /var/log/nginx/access.log
清空所有日志文件
随着时间的流逝,您的磁盘驱动器可能会堆满很多大型日志文件,
这些日志文件会占用大量磁盘空间。
以下命令将清空/var/log目录下以“ .log”结尾的文件:
sudo truncate -s 0 /var/log/**/*.log
一个更好的选择是使用 logrotate 工具压缩和删除日志文件。