1、在xx_filename.sv文件的末尾加入 xxx hello world;12334 hello;
cat >> xx_filename.sv <<EOF
xxx hello world
12334 hello
EOF
>>:输出附加定向符( >> )的作用是把命令/程序的输出附加到指定文件的末尾;
这种方式叫 Heredoc。csh、 bash 和 zsh 都支持这种语法,是用于给某个指令(示例中就是cat)传递多行参数的,然后 cat 在把这些参数重定向( >> ) 到文件中( xx_filename.sv )
EOF是分隔符,EOF本意为 End Of File,文件末尾的意思,分隔符不一定非要写成EOF,你用其他字符串也可以,只不过大家都比较习惯用EOF,相当于通用习惯。
find命令
2、查找文件:find / -name httpd.conf #在根目录下查找文件httpd.conf,表示在整个硬盘查找
(2)find /etc -name httpd.conf #在/etc目录下文件httpd.conf
(3)find /etc -name '*srm*' #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
(4)find . -name 'srm*'
5) grep -r ‘energywise’ * #在当前目录及其子目录下搜索'energywise'行的文件
查找文件里面的内容
查找所有扩展名为.txt的文本文件,并找出包含“MMMM”的行
find . -name "*.txt" |xargs grep "MMMM"
实践:查找当前目录下,所有log文件中带有TEST CASE FAILED的关键词
find . -name "*.log" |xargs grep "TEST CASE FAILED"
查找的字符里面有:“”
find . -name "*.sv" | xargs grep '\"hello'
将某个目录中的所有子目录中的所有txt文件中的yyy字符都替换成xxx字符,则需要使用以下命令:(好像不行)
sed -i s/yyyy/xxxx/g `grep yyyy -rl --include="*.txt" ./`
//``括起来的grep命令,表示将grep命令的的结果作为操作文件。
// 方法2
find . -type f -name '*.html' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'
如果是当前目录下的文件则可以直接通过命令(可行)(xxx被yyy替换)
sed -i s/\"xxxxx_tr/\"yyyyy_tr/g ./*.sv
用sed把目录所有文件中特定字符串进行替换
find /home/user/docs -type f -exec sed -i 's/old_string/new_string/g' {} \;
- 这里
find
命令的参数解释如下:-type f
:表示只查找文件类型,这样可以避免对目录等非文件对象进行操作。-exec
:是find
命令用于执行其他命令的选项。sed -i 's/old_string/new_string/g' {}
:这是-exec
要执行的命令。其中-i
选项表示直接在文件中进行修改(如果不加-i
,sed
会将修改后的内容输出到标准输出,而不会修改原始文件),s/old_string/new_string/g
是sed
的替换命令,s
表示替换,/
是分隔符,old_string
是要替换的字符串,new_string
是替换后的字符串,g
表示全局替换,即文件中所有出现old_string
的地方都会被替换。{}
是一个占位符,find
会将找到的每个文件的路径替换到{}
的位置,\;
是-exec
命令的结束符。
把某一个目录下,3天之前的文件删掉:
find /xx/path/output/ -maxdepth 2 -mtime +3 -exec rm -rf {} \;
-maxdepth<目录层级>:设置最大目录层级;设置查找的目录深度;
-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-mtime n
:查找在 n*24 小时内被修改过的文件。-
-mtime 0 表示查找今天修改过的文件,-mtime -7 表示查找一周以前修改过的文件。
-
关于时间 n 参数的说明:
-
+n:查找比 n 天前更早的文件或目录。
-
-n:查找在 n 天内更改过属性的文件或目录。
-
n:查找在 n 天前(指定那一天)更改过属性的文件或目录。
-
-exec 选项允许你执行一个命令,{} 将会被匹配到的文件名替代,\; 表示命令结束。
find参数说明参考:
linux find 命令查找文件和文件夹 - jiftle - 博客园
一些不错的例子:Linux中find命令用法全汇总,看完就没有不会用的!-腾讯云开发者社区-腾讯云
批量替换:
参考:sed命令——批量修改文件内容 - 曹伟雄 - 博客园
批量替换多个文件内容
命令格式:sed -i "s/原内容/新内容/g" `grep 原内容 -rl 所在目录` 注:千万注意这个符号【`】,是【最左上角】那个符号不是单引号
1 |
|
例如:我要把/test下所有文件,包含java的替换为linux,可以用以下命令:
1 |
|
终端窗口字体大小:
缩小:'shift' + '-'
放大:'Ctrl ' + 'shift' + '='
————————————————
原文链接:https://blog.youkuaiyun.com/qq_40571921/article/details/117227527
grep
grep 匹配到关键词后,打印其前后几行:
参考链接:Linux grep根据关键字匹配前后几行_grep查看最新匹配文件最后几行-优快云博客
实际使用:grep -rA 5 " parttern " .
上面-r是对目录递归处理,打印匹配后面的5行;
输出grep匹配项前后几个字符;
参考:
grep 命令查询命中字符串的前后 n 个字符 - 书亚博园
$ echo "some123_string_and_another" | grep -o -P '.{0,3}string.{0,4}'
23_string_and
查找目录下面所有log文件,匹配:ALL_BW(Mpps)'并打印下面6行;
find -name "*.log" |xargs grep -A 6 'ALL_BW(Mpps)'
当前目录下递归查找:特定字符
grep -rn "待查找字符" .
统计当前目录下特定文件行数:
find -name "*.v" |xargs wc -l
wc命令可以用来统计文件的行数 、单词数 、字符数;
wc -l xx.txt # 统计xx.txt文件的行数
显示当前路径下,所有sv文件的代码行数,从高到底排列
find . -name "*.sv" -exec wc -l {} + | sort -nr
lsof(list open files)命令可以列出当前系统已经打开的所有文件。在Linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
lsof(list open files)是一个用于显示系统中所有打开文件的命令。
基本用法:
1. lsof:显示所有打开的文件和文件夹。
2. lsof [文件名]:显示指定文件的相关信息。
3. lsof -u [用户名]:显示指定用户所打开的文件。
4. lsof -p [进程号]:显示指定进程所打开的文件。
5. lsof -i:显示网络连接的相关信息。
6. lsof -i :[端口号]:显示指定端口号上的网络连接。
7. lsof -i tcp:显示TCP协议相关的网络连接。
8. lsof -i udp:显示UDP协议相关的网络连接。
9. lsof +D [目录]:显示指定目录下的打开文件。
10. lsof -c [进程名]:显示指定进程名所打开的文件。
常用选项:
- a:显示打开文件的进程,并包括进程的命令行参数。
- c [进程名]:只显示指定进程所打开的文件。
- d [文件描述符]:显示指定文件描述符对应的文件。
- i [条件]:显示符合条件的打开文件,条件可以是文件描述符、进程ID、用户名等。
- n:不解析主机名。
- p [进程号]:只显示指定进程号所打开的文件。
- u [用户名]:只显示指定用户所打开的文件。
- P:显示进程号而不显示进程名。
- r [重复次数]:循环显示列表。
lsof命令可以帮助用户查找和监视系统中正在使用的文件和网络连接,它可以对系统进行调试、性能优化和安全审计等工作有很大帮助。
强制关闭进程:
kill -9 进程号pid(lsof可以显示pid)
建立软连接:
ln -s /be_link_path/src_file ptr_filename
linux显示历史命令和执行时间
方法一:通过环境变量设置
可以通过修改 HISTTIMEFORMAT
环境变量来实现显示历史命令的执行时间
export HISTTIMEFORMAT='%F %T '
%F
表示完整日期,格式为YYYY-MM-DD
。%T
表示 24 小时制的时间,格式为HH:MM:SS
。
永久设置
若希望每次登录系统都能显示历史命令的执行时间,可以将 export HISTTIMEFORMAT='%F %T '
命令添加到用户的 ~/.bashrc
或 ~/.bash_profile
文件中。