python基础一 ------linux某目录下批量的为特定文件加入可执行权限
需求:
一个文件夹中有个文件,要求对特定的文件加入可执行权限
某文件系统目录下有一系列文件:
quicksort
graph.py
heap.java
install.sh
stack.cpp
.....
编写程序对所有的.sh文件和.py文件加上用户可执行权限
解决方法:
使用字符串的str.startswith()和str.endswith()方法
注意,多个匹配时参数使用元组
一:首先创建几个文件,如图(并没有可执行权限)

二:具体代码实现(还可以通过列表表达式)

实现效果:

讲解:
os.listdir(".") :将所在的文件夹下所有文件名以列表形式返回
x.endswith(".sh") 判断x这个字符串是否以.sh文件结尾
x.endwith((".sh",",py")) 判断这个字符串是否以.sh或者.py文件结尾;注意,必须是元组类型
执行权限是怎样被改变的?
os.stat("a.sh") 查看文件的属性

注:此部分参考了 这篇博文
st_mode ------> 权限模式(十进制)
st_ino ---------> inode number
st_dev ---------> device
st_nlike --------> number of hard links
st_uid --------> 所有用户的user_id
st_gid -----------> 所有用户组的group_id
st_size ----------> 文件大小,以位为单位
st_atime ---------> 文件最后的访问时间
st_mtime --------> 文件的最后修改时间
st_ctime ---------> 文件的创建时间
查看文件的权限信息,转八进制,看到 764

修改权限: 只需将文件的权限与stat.S_IXUSR进行或运算
python基础一 ------linux某目录下批量的为特定文件加入可执行权限的更多相关文章
- linux 查询目录下包含关键字的所有文件
linux查找目录下的所有文件中是否含有某个字符串 查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有 ...
- python实现指定目录下批量文件的单词计数:并发版本
在 文章 <python实现指定目录下批量文件的单词计数:串行版本>中, 总体思路是: A. 一次性获取指定目录下的所有符合条件的文件 -> B. 一次性获取所有文件的所有文件行 - ...
- python基础班-淘宝-目录.txt
卷 TOSHIBA EXT 的文件夹 PATH 列表卷序列号为 AE86-8E8DF:.│ python基础班-淘宝-目录.txt│ ├─1-1 Linux基础│ ├─01-课程简介│ │ 01-课程 ...
- linux查看目录下各个文件大小的命令
linux查看目录下各个文件大小的命令 由于需要经常查看各个文件的具体大小 ,所以这里记一下. 命令如下: du -h --max-depth=1
- linux替换目录下所有文件中的某字符串
linux替换目录下所有文件中的某字符串 比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做: sed -i "s/zhangsan/lisi/g&quo ...
- [转帖]Linux /tmp目录下执行脚本失败提示Permission denied
Linux /tmp目录下执行脚本失败提示Permission denied https://www.cnblogs.com/linyfeng/p/11087655.html 国产化的环境上 就有一个 ...
- [转帖]linux /proc目录下的文件为何无法用vi编辑保存
linux /proc目录下的文件为何无法用vi编辑保存 https://blog.51cto.com/xlogin/1216914 学习一下 之前看过书 这一点 没太仔细看.. xlogin关注8人 ...
- Java基础知识强化之IO流笔记49:IO流练习之 复制指定目录下指定后缀名的文件并修改名称的案例
1. 复制指定目录下指定后缀名的文件并修改名称的案例 需求:复制指定目录下的指定文件,并修改后缀名. • 指定的文件是:.java文件. • 指定的后缀名是:.jad • 指 ...
- shell下批量重命名svn文件的方法
shell下批量重命名svn文件的方法 目标: 将svn目录下所有文件重命名 , 原文件前缀为 ucc_ , 批量改为 xmd_ 用tree看下当前svn目录 ucc_1.c ucc_1.h ucc_ ...
随机推荐
- Git使用一:git客户端安装与创建用户
1.下载并安装Git和图形客户端TortoiseGit Git官网:https://gitforwindows.org/ TortoiseGit官网: https://tortoisegit.org/ ...
- springboot+mybatis+springMVC基础框架搭建
项目结构概览 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http: ...
- 论文阅读笔记一:Tutorial on Gabor Filters
时域下的一维Gabor滤波器: 可以将Gabor滤波器看作是两个输出两个相位的滤波器,分别在实数域和虚数域上. 实数域上滤波器为: 虚数域上滤波器为: 傅里叶变换为频域: 上述两个滤波器对频率敏感,为 ...
- 010-Python-socket编程
客户端/服务器的架构 物理层:网卡,光缆,双绞线 数据链路层:包含源mac地址和目标的mac地址,通过广播通讯 网络层:跑的IP协议,IP地址可以定义到一个子网:通过ARP协议可以解析为mac地址: ...
- Eclipse Memory Analyzer
先写一段可以制造堆溢出的代码 package com.test.jvm.oom; import java.util.ArrayList; import java.util.List; /** * @d ...
- Java基础知识➣发送Emai和访问MySQL数据库(七)
概述 Java程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 JavaMail API 和Java Activation Framework (JAF) .Java访问数据则需要 使 ...
- MySQl 查询性能优化相关
0. 1.参考 提升网站访问速度的 SQL 查询优化技巧 缓存一切数据,读取内存而不是硬盘IO 如果你的服务器默认情况下没有使用MySQL查询缓存,那么你应该开启缓存.开启缓存意味着MySQL 会把所 ...
- centos6.9编译安装nginx
1.安装nginx所需的依赖包: yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel ...
- ReactNative调试技术-真机调试
在我开始用ReactNative开始开发APP时,为了能够获取程序运行中的信息,就需要搭建调试环境. 手机调试方式有两类,一类是模拟器方式,另一类是真机模式. 我测试了一下相应的模拟器: 如果用谷歌管 ...
- 向Spark集群提交任务
1.启动spark集群. 启动Hadoop集群 cd /usr/local/hadoop/ sbin/start-all.sh 启动Spark的Master节点和所有slaves节点 cd /usr/ ...