linux系统的遍历命令 linux递归遍历目录

如何用C遍历unix/linux下的所有进程,取得PID,名称等等

用管道:

创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计制作、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的定远网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

通过fgets(buf, n, ptr)buf就可以得到命令“ps -ef"一样的信息,

读帮助”man popen":

char *cmd = "ps -ef";

FILE *ptr;

if ((ptr = popen(cmd, "r")) != NULL)

while (fgets(buf, n, ptr) != NULL)

(void) printf("%s ",buf);

UID PID PPID C STIME TTY TIME CMD

root 0 0 0 Sep-30 ? 00:00:01 sched

root 1 0 0 Sep-30 ? 00:00:06 /etc/init -a

root 2 0 0 Sep-30 ? 00:00:00 vhand

root 3 0 0 Sep-30 ? 00:00:27 bdflush

root 4 0 0 Sep-30 ? 00:00:00 kmdaemon

root 5 1 0 Sep-30 ? 00:00:50 htepi_daemon /

root 6 0 0 Sep-30 ? 00:00:00 strd

root 2941 1 0 Oct-08 tty01 00:00:00 /bin/login ccb

root 43 1 0 Oct-08 ? 00:00:02 /etc/syslogd

root 47 1 0 Oct-08 ? 00:00:00 /etc/ifor_pmd

root 48 47 0 Oct-08 ? 00:00:13 /etc/ifor_pmd

root 36 1 0 Oct-08 ? 00:00:00

别不信!掌握好这20条Linux基础命令,让你的操作效率直接双倍

今日分享开始啦,请大家多多指教~

linux 系统中采用了多用户的管理方式使用系统

默认用户是root,有最高的权限。(在终端显示为 #)

普通用户为:$

在linux系统中没有盘符的概念,以树的形式管理文件

整个系统的根文件为 /

# 目录结构

linux系统中命令的使用

在使用linux系统命令的时候,严格区分大小写

使用命令的语法: 命令 [-选项] 参数

clear 清屏

1.ls命令

ls 显示文件和目录列表(list)

常用参数:

-l (long) 长格式显示文件和目录信息

-a (all) 显示所有文件和目录(包含隐藏文件和目录)

-R 递归显示指定目录下的文件清单,即会显示指定目录分支内各子目录中的文件清单。

ls -R ,会递归显示目录下的文件。

查看指定目录下的文件

ls /(指定目录) 例如:ls /etc

查看文件和目录的组合使用命令

例如 ls -la 指定目录 查看目录下所有文件并且长格式展示

2. cd 命令

cd 切换的目录名

pwd 显示当前所在目录

cd /root 回家目录 或者 cd ~ 或者 cd 快速回家

3.常用操作文件命令

4.ls -l 长格式说明

5.网络相关命令

ip addr 查看当前服务器地址

简写: ip a

ping ip地址 测试网络连通性

会一直ping 。Ctrl+c 结束

6.压缩相关命令

tar 命令

-c 建立一个压缩文件的参数指令(create) 打包 .tar

-x 解开一个压缩文件的参数指令(extract)解压

-z 是否要用 gzip 压缩 压缩 .tar.gz

-v 压缩过程中显示文件(日志)

-f 指定打包名字,f后紧跟名字(必有)

例如: tar -zcvf linux.tar.gz aa.txt bb.txt

tar -zxvf linux.tar.gz

7.centos独有 服务命令

systemctl

8.进程相关

ps 查询当前控制台上运行的进程

动态显示进程 top

杀死进程 kill

9.vi 命令

vi /vim 是linux最常用的文本编辑器,功能非常强大。

vi 有三种模式 :

常用命令

10.软件相关的命令

rpm 命令 需要有rmp 的安装包

rpm -ivh gcc-c+ 4.4.7-3.e16.x86_64.rpm

yum命令 [好用,自动检测依赖下载]

使用yum命令必须连接外部网络。

11.用户和组相关命令

1.查看当前用户:whoami

查看登录用户:who

退出用户 exit

添加、删除组账号:groupadd、groupdel

添加用户账号:useradd

设置用户名密码:passwd [用户名]

su 切换用户

12.权限相关命令

linux 文件有三种权限,r读,w写,x执行;r=4,w=2,x=1

chmod

今日份分享已结束,请大家多多包涵和指点!

如何获取?

转发分享此文,后台私信我:“1”即可获取。(注:转发分享,感谢大家)

linux平台:使用lua语言遍历某一文件夹下所有文件

你可以参考如下实例代码:function getFile(file_name) 

local f = assert(io.open(file_name, 'r'))

local string = f:read("*all")

f:close()

return string

end function writeFile(file_name,string)

local f = assert(io.open(file_name, 'w'))

f:write(string)

f:close()

end --从命令行获取参数, 如果有参数则遍历指定目录,没有参数遍历当前目录 if arg[1] ~= nil then

cmd = "ls "..arg[1]

else

cmd = "ls" end print("cmd", cmd)

--io.popen 返回的是一个FILE,跟c里面的popen一样 local s = io.popen(cmd)

local fileLists = s:read("*all")

print(fileLists)

while true do --从文件列表里一行一行的获取文件名 _,end_pos, line = string.find(fileLists, "([^\n\r]+.txt)", start_pos)

if not end_pos then break end --    print ("wld", line) local str = getFile(line)

--把每一行的末尾 1, 替换为 0, local new =string.gsub(str, "1,\n", "0,\n");

--替换后的字符串写入到文件。以前的内容会清空     writeFile(line, new)

start_pos = end_pos + 1 end

linux常用的命令有哪些

Linux运维人员必会的120个命令

来自《跟老男孩学Linux运维:核心系统命令实战》一书

前言

第1章 Linux命令行简介 / 1

1.1Linux命令行概述 / 1

1.2在Linux命令行下查看命令帮助 / 4

1.3Linux shutdown reboot halt / 9

关机:

shutdown -h now

halt

init 0

第2章 文件和目录操作命令 / 13

2.1pwd:显示当前所在的位置 / 13

2.2cd:切换目录 / 16

2.3tree:以树形结构显示目录下的内容 / 18

2.4mkdir:创建目录 / 22

2.5touch:创建空文件或改变文件的时间戳属性 / 27

2.6ls:显示目录下的内容及相关属性信息 / 30

2.7cp:复制文件或目录 / 39

2.8mv:移动或重命名文件 / 42

2.9rm:删除文件或目录 / 45

2.10rmdir:删除空目录 / 48

2.11ln:硬链接与软链接 / 49

2.12readlink:查看符号链接文件的内容 / 54

2.13find:查找目录下的文件 / 55

2.14xargs:将标准输入转换成命令行参数 / 68

2.15rename:重命名文件 / 71

2.16basename:显示文件名或目录名 / 72

2.17dirname:显示文件或目录路径 / 72

2.18chattr:改变文件的扩展属性 / 73

2.19lsattr:查看文件扩展属性 / 75

2.20file:显示文件的类型 / 76

2.21md5sum:计算和校验文件的MD5值 / 77

2.22chown:改变文件或目录的用户和用户组 / 80

2.23chmod:改变文件或目录权限 / 81

2.24chgrp:更改文件用户组 / 85

2.25umask:显示或设置权限掩码 / 86

2.26老男孩从新手成为技术大牛的心法 / 90

第3章 文件过滤及内容编辑处理命令 / 91

3.1cat:合并文件或查看文件内容 / 91

3.2tac:反向显示文件内容 / 103

3.3more:分页显示文件内容 / 104

3.4less:分页显示文件内容 / 107

3.5head:显示文件内容头部 / 109

3.6tail:显示文件内容尾部 / 111

3.7tailf:跟踪日志文件 / 114

3.8cut:从文本中提取一段文字并输出 / 115

3.9split:分割文件 / 117

3.10paste:合并文件 / 118

3.11sort:文本排序 / 123

3.12join:按两个文件的相同字段合并 / 127

3.13uniq:去除重复行 / 129

3.14wc:统计文件的行数、单词数或字节数 / 131

3.15iconv:转换文件的编码格式 / 133

3.16dos2unix:将DOS格式文件转换成UNIX格式 / 134

3.17diff:比较两个文件的不同 / 135

3.18vimdiff:可视化比较工具 / 138

3.19rev:反向输出文件内容 / 139

3.20tr:替换或删除字符 / 140

3.21od:按不同进制显示文件 / 143

3.22tee:多重定向 / 145

3.23vi/vim:纯文本编辑器 / 147

3.24老男孩逆袭思想:做Linux运维的多个好处 / 152

第4章 文本处理三剑客 / 153

4.1grep:文本过滤工具 / 153

4.2sed:字符流编辑器 / 159

4.3awk基础入门 / 165

第5章 Linux信息显示与搜索文件命令 / 176

5.1uname:显示系统信息 / 176

5.2hostname:显示或设置系统的主机名 / 178

5.3dmesg:系统启动异常诊断 / 179

5.4stat:显示文件或文件系统状态 / 181

5.5du:统计磁盘空间使用情况 / 183

5.6date:显示与设置系统时间 / 186

5.7echo:显示一行文本 / 190

5.8watch:监视命令执行情况 / 193

5.9which:显示命令的全路径 / 195

5.10whereis:显示命令及其相关文件全路径 / 196

5.11locate:快速定位文件路径 / 197

5.12updatedb:更新mlocate数据库 / 199

5.13老男孩逆袭思想:新手在工作中如何问问题不会被鄙视 / 200

第6章 文件备份与压缩命令 / 201

6.1tar:打包备份 / 201

6.2gzip:压缩或解压文件 / 208

6.3zip:打包和压缩文件 / 211

6.4unzip:解压zip文件 / 212

6.5scp:远程文件复制 / 214

6.6rsync:文件同步工具 / 216

6.7老男孩逆袭思想:新手如何高效地提问 / 220

第7章 Linux用户管理及用户信息查询命令 / 222

7.1 useradd:创建用户 / 222

7.2usermod:修改用户信息 / 227

7.3userdel:删除用户 / 229

7.4groupadd:创建新的用户组 / 230

7.5groupdel:删除用户组 / 231

7.6passwd:修改用户密码 / 232

7.7chage:修改用户密码有效期 / 237

7.8chpasswd:批量更新用户密码 / 238

7.9su:切换用户 / 240

7.10visudo:编辑sudoers文件 / 242

7.11sudo:以另一个用户身份执行命令 / 244

7.12id:显示用户与用户组的信息 / 248

7.13w:显示已登录用户信息 / 249

7.14who:显示已登录用户信息 / 250

7.15users:显示已登录用户 / 252

7.16whoami:显示当前登录的用户名 / 253

7.17last:显示用户登录列表 / 253

7.18lastb:显示用户登录失败的记录 / 254

7.19lastlog:显示所有用户的最近登录记录 / 255

第8章 Linux磁盘与文件系统管理命令 / 257

8.1fdisk:磁盘分区工具 / 257

8.2partprobe:更新内核的硬盘分区表信息 / 265

8.3tune2fs:调整ext2/ext3/ext4文件系统参数 / 266

8.4parted:磁盘分区工具 / 268

8.5mkfs:创建Linux文件系统 / 272

8.6dumpe2fs:导出ext2/ext3/ext4文件系统信息 / 274

8.7resize2fs:调整ext2/ext3/ext4文件系统大小 / 275

8.8fsck:检查并修复Linux文件系统 / 278

8.9dd:转换或复制文件 / 281

8.10mount:挂载文件系统 / 284

8.11umount:卸载文件系统 / 288

8.12df:报告文件系统磁盘空间的使用情况 / 289

8.13mkswap:创建交换分区 / 293

8.14swapon:激活交换分区 / 294

8.15swapoff:关闭交换分区 / 295

8.16sync:刷新文件系统缓冲区 / 296

第9章 Linux进程管理命令 / 298

9.1ps:查看进程 / 298

9.2pstree:显示进程状态树 / 305

9.3pgrep:查找匹配条件的进程 / 306

9.4kill:终止进程 / 307

9.5killall:通过进程名终止进程 / 310

9.6pkill:通过进程名终止进程 / 311

9.7top:实时显示系统中各个进程的资源占用状况 / 313

9.8nice:调整程序运行时的优先级 / 320

9.9renice:调整运行中的进程的优先级 / 323

9.10nohup:用户退出系统进程继续工作 / 324

9.11strace:跟踪进程的系统调用 / 325

9.12ltrace:跟踪进程调用库函数 / 332

9.13runlevel:输出当前运行级别 / 334

9.14init:初始化Linux进程 / 335

9.15service:管理系统服务 / 335

第10章 Linux网络管理命令 / 338

10.1ifconfig:配置或显示网络接口信息 / 338

10.2ifup:激活网络接口 / 343

ifup eth0

10.3ifdown:禁用网络接口 / 343

ifdown eth0

service network restart(/etc/init.d/network restart) 激活整个网络,所有网卡。

10.4route:显示或管理路由表 / 344

10.5arp:管理系统的arp缓存 / 350

10.6ip:网络配置工具 / 351

10.7netstat:查看网络状态 / 358

10.8ss:查看网络状态 / 362

10.9ping:测试主机之间网络的连通性 / 363

10.10traceroute:追踪数据传输路由状况 / 366

10.11arping:发送arp请求 / 367

10.12telnet:远程登录主机 / 369

10.13nc:多功能网络工具 / 370

10.14ssh:安全地远程登录主机 / 373

10.15wget:命令行下载工具 / 376

10.16mailq:显示邮件传输队列 / 379

10.17mail:发送和接收邮件 / 381

10.18nslookup:域名查询工具 / 386

10.19dig:域名查询工具 / 389

10.20host:域名查询工具 / 393

10.21nmap:网络探测工具和安全/端口扫描器 / 394

10.22tcpdump:监听网络流量 / 398

第11章 Linux系统管理命令 / 407

11.1lsof:查看进程打开的文件 / 407

11.2uptime:显示系统的运行时间及负载 / 411

11.3free:查看系统内存信息 / 411

11.4iftop:动态显示网络接口流量信息 / 413

11.5vmstat:虚拟内存统计 / 415

11.6mpstat:CPU信息统计 / 419

11.7iostat:I/O信息统计 / 420

11.8iotop:动态显示磁盘I/O统计信息 / 423

11.9sar:收集系统信息 / 425

11.10chkconfig:管理开机服务 / 430

11.11ntsysv:管理开机服务 / 433

11.12 setup:系统管理工具 / 434

11.13ethtool:查询网卡参数 / 436

11.14mii-tool:管理网络接口的状态 / 437

11.19rpm:RPM包管理器 / 443

11.20yum:自动化RPM包管理工具 / 446

top命令

第12章 Linux系统常用内置命令 / 450

12.1Linux内置命令概述 / 450

12.2Linux内置命令简介 / 450

12.3Linux常用内置命令实例 / 452

在linux shell(bash)编程中,如何通过递归方式遍历文件

写一个函数,函数的参数是目录路径字符串

函数内使用 ls -s dir_path , 然后for 遍历循环

如果是目录则继续调用自身

如果是文件则答应文件名

从执行优化的角度来讲,可以把判断目录还是文件的代码放在循环外层.

好久没写shell了 ,我这也没环境测试 , 只能给个思路,函数的具体写法自己找一下资料吧.

另外,find命令可以直接完成你要做的事.

linux shell 命令怎么遍历目录

先设定实验环境:

# 造 5 个 目录,每个目录下,造 3 个 文件和两个子目录如下:

cd $HOME/tmp

for i in d1 d2 d3 d4 d5

do

mkdir -p $i

touch $i/1.txt $i/2.txt $i/3.txt

mkdir -p $i/tmp1 $i/tmp2

done

# 检验测试环境:

$ ls -lR d1

total 0

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 1.txt

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 2.txt

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 3.txt

drwxr-sr-x 2 wenlee comm 256 Dec 22 10:35 tmp1/

drwxr-sr-x 2 wenlee comm 256 Dec 22 10:35 tmp2/

# 利用下列脚本来实现你要做的:

cd $HOME/tmp

for i in */1.txt

do

echo "Found $i, save $i and remove everything else under $(dirname $i)/"

save_this_file=$(basename $i)

curr_dir=$(dirname $i)

# 把这个1.txt暂时存到/tmp里面去,为了避免已经有同样的档案名称在/tmp,加上$$ (i.e. PID)

mv $i /tmp/${save_this_file}.$$

rm -rf $curr_dir

mkdir -p $curr_dir

mv /tmp/${save_this_file}.$$ $curr_dir

done

# 屏幕执行输出如下:

Found d1/1.txt, save d1/1.txt and remove everything else under d1/

Found d2/1.txt, save d2/1.txt and remove everything else under d2/

Found d3/1.txt, save d3/1.txt and remove everything else under d3/

Found d4/1.txt, save d4/1.txt and remove everything else under d4/

Found d5/1.txt, save d5/1.txt and remove everything else under d5/

# 复验实验环境:

$ ls -l d?/*

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 d1/1.txt

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 d2/1.txt

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 d3/1.txt

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 d4/1.txt

-rw-r--r-- 1 wenlee comm 0 Dec 22 10:35 d5/1.txt

OK?

thanks!


分享标题:linux系统的遍历命令 linux递归遍历目录
路径分享:http://scyanting.com/article/heppds.html