佛山网站建设公司3lue,国外以紫色为背景的网站,定制app开发哪家比较好,视频在线直播网站建设Bash Shell 通过ls命令及其管道根据大小名称筛选文件
最近参与的项目当中有需要用pyarmor加密项目的要求#xff0c;听网上吹的pyarmor都那么神#xff0c;用了一下感觉也一般#xff0c;试用版普通模式下文件加密居然还有大小32KB的限制#xff0c;加密到一半就失败了听网上吹的pyarmor都那么神用了一下感觉也一般试用版普通模式下文件加密居然还有大小32KB的限制加密到一半就失败了难绷。
失败了也不告诉别人是哪个文件大小超了项目文件那么多怎么好一个个去查哪个文件大于32768B重温了一下shell一行命令偷个懒省得麻烦自己。
首先想到的就是ls。详解就不说了百度一大堆比如这个。对于我的任务而言ls -Rl和ls -I即可满足。
-R # 递归处理将指定目录下的所有文件及子目录一并处理列出
-l # 以长格式显示目录下的内容列表。简单而言就是更详细的信息。
-h # 以可读方式列出如文件大小MB,GB而非B
-I # 忽略特定文件。如ls -I *.py忽略后缀为py的文件ls -I tests忽略当前目录下tests文件夹正好ls -Rl列出的每一行内容是由一列一列的元素组成的可以通过awk脚本进行处理。 列出的内容当中黄色框出来的是文件大小以字节为单位蓝色框出来的是文件夹名包括后缀。我用的是KDE的桌面所以.desktop作为应用程序链接会显示其链接到的位置这里不用管。
不懂awk脚本的可以了解下啥是三剑客awk、grep、sed。 学习awk基础用法 和 awk条件判断与正则 以及 awk变量解析 真是书到用时方恨少初学linux时铁汁就都有讲过只是都忘得差不多辣。。。Linux程序设计环境 实验1《Linux常用命令和Shell编程》
显然我们取每一行第5列的值就可根据大小筛选文件了
ls -Rl | awk {if($532768) print$0}这样筛选出文件大小大于32768B的文件并输出整行内容。由于加密的只有.py文件并且需要排除tests目录正好文件名位于末尾所以简单加个正则就能把.py文件筛出来了
ls -Rl -I tests | awk /^.*\.py$/ | awk {if($532768) print$0}