毕业马上两年了,感觉自己还是菜,但卷又卷不动,躺又躺不平,学不进去东西,就找点公众号面试题瞅瞅,做下。因为发现看了的知识真的很容易忘。由于菜,所以一道一道的写,本次题目来自公众号:Kubernetes生态圈 。
纯粹出于菜逼对大佬的敬仰,同时想写一遍记录下不那么容易忘,如有侵权,麻烦联系下,我会尽快删除,同时感谢分享,公众号大哥长生不老,永远不死。
Linux系统的/temp目录下有大量目录和文件,现在需要找出该目录下所有以test开头的txt文件,并将其中的字符aaa改了bbb?请给出相关的命令
思路:
这个题目感觉先分解下再组合下:
1.找文件。 找文件的话find肯定还是不错的
find /temp -type f -name 'test*.txt'
这句的意思是找tmp目录下的文件(非目录),名称中符合test开头的txt类型文件
2.改字符。改字符这种操作的话习惯性选shell三剑客,感觉可以用awk来写,但遵守特性的话处理文本还是sed吧
sed -i 's/aaa/bbb/g'
直接对原文件操作,搜索aaa并全局替换成bbb
3.把这俩拼起来。find这里正常习惯使用的还是exec
find /temp -type f -name 'test*.txt' -exec sed -i 's/aaa/bbb/g' {} \;
4.第三步拼起来的命令,基本可以完成,但是在题目中要求是大量的文件,所以还得用+效果会好点儿
find /temp -type f -name 'test*.txt' -exec sed -i 's/aaa/bbb/g' {} +
+即匹配尽可能多的文件去执行,第三步的命令是查到一个去执行一个相对来说执行效率较低