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 工具压缩和删除日志文件。




全部评论

相关推荐

已老实求offer😫:有点像徐坤(没有冒犯的意思哈)
点赞 评论 收藏
分享
牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务