您的位置:首页 > 编程语言 > C#

C#遍历指定文件夹中的所有文件

2012-11-21 16:21 543 查看
Unix 的基本命令:

man info

cd, alias, export, fg, bg, history

ls, pwd, cp, mv, rm, diff, sort, cat, more, grep, find, which,

head, tail, chown, chmod, file, mkdir, rmdir, ln, touch, split, cut, wc,

echo, ps, su, kill, exit, passwd, chsh, sleep,

df, du, history, date, id, ipcs, ipcrm,

tar, gzip(gunzip), bzip2(bunzip2), compress(uncompress), zcat, zmore,

ftp, telnet, ssh (sftp),

示例:

$ man man # 查看命令 man 的手册

$ man date #

$ man localtime

$ echo $PATH # 打印变量 PATH

$ echo $? # 变量 $? 是上一个命令的返回状态.

$ alias rm='rm -i'

$ export PATH=$HOME/bin:$PATH

$ which prog # 查看 prog 在哪, 在变量 $PATH 中找

$ date # 系统时间, 显示或设置

$ id # 用户信息

$ su - test # 切换用户

$ sleep 60 # 休眠

$ history # 命令输入的历史记录

$ history | grep prog

更改目录:

$ cd # 相当于 cd $HOME

$ cd /path/to/dir

$ cd - # 跳回上一个路径

基本的文件及目录操作:

$ ls # 查看文件或目录信息

$ ls -l

$ ls /path/to/dir

$ ls -lrt # 按文件修改时间排序

$ cp file1 file2 # copy 文件

$ cp -f file1 file2

$ /bin/cp -f file1 file2

$ cp file* /path/to/dir

$ mv file1 file2 # 把 file1 改名为 file2

$ mv -f file1 file2

$ rm file1 # 删除文件

$ rm -f file2

$ rm -rf /path/to/dir

$ mkdir /path/to/dir # 创建目录

$ mkdir -p path/to/dir/dir2 # 先创建目录 path, to, dir

$ rmdir /path/todir # 删除空目录

$ touch file # 更改文件 file 的修改时间为当前时间

# 若无文件 file , 则创建空文件 file

$ cat file # 把文件 file输出至屏幕

$ cat > file # 从标准输入创建一文件, 按 ^D 结束

$ more file # 分页查看文件 file

$ prog | more

$ grep word file1 # 输出文件 file1 中有字 word 的行

$ prog | grep word

$ head file1 # 输出文件的前 10 行

$ tail file1 # 输出文件的最后 10 行

$ tail -f file1

$ cut -b1-10 file1

$ wc file1 # 统计文件的行数, 字节等

$ wc -l file1

$ sort file1 # 对文件的每行排序

$ sort -u file1 # 去掉重复的行再排序

$ prog | sort -u > file1

$ find . -name "*.c" # 查找文件

$ find /path/to/dir -type f

$ find /path/to/dir -name "*.Z" -exec rm -f {} \;

$ find /path/to/dir -name "*.Z" -exec zcat {} \; | perl -e 'do something'

$ split -l 1000 file1 # 分割文件成多个小文件

$ split -a 3 -l 1000 file1

$ chmod 755 file1 # 修改文件权限

$ chmod +s file2

$ chown qsh.devolop file3 # 修改文件的用户权限

$ ln -s file1 file2 # 对文件做链接

$ ln -s tmp/*.c tmp2

$ ln ../tmp/* tmp2

查看进程及终止进程

$ ps axu

$ ps -ef

$ kill -l

$ kill 1234 # 终止进程, 默认发送信号 SIGTERM.

$ kill -2 1234

$ kill -9 1234 # 信号 9 是强制终止.

文件系统及目录使用情况:

$ df

$ df /tmp

$ df -k /tmp

$ df .

$ du /path/to/dir

查看共享内存, 信号量, 消息队列情况:

(可先不练习, 以后有了这方面的概念与基础后, 再回来看)

$ ipcs -s

$ ipcs -a

$ ipcs -m

$ ipcs -am

$ ipcrm -m 0x1234

$ ipcrm -M 102394

判断 file1 属于哪类文件:

$ file file1

$ file `which which`

文件压缩(解压缩)及目录打包:

$ tar -cf work.tar work # 把目录 work 打包为 work.tar

$ tar -cf /path/to/dir/work.tar work

$ gzip work.tar # 压缩文件

$ tar -cf - work | gzip - > work.tar.gz # 打包的同时压缩

$ gzip -cd work.tar.gz | tar -xf - # 解压缩文件

$ gzip -cd file1.gz | more

$ bzip2 -cd work.tar.bz2 | tar -xf -

$ bunzip2 file2.bz2

$ gunzip file3.gz

$ compress file1

$ uncompress file1.Z

$ zcat file1.Z

$ zmore file1.Z

远程登录及文件传输

$ ftp 10.200.27.92

$ telnet 10.200.27.92

$ ssh root@10.200.27.92

$ sftp root@10.200.27.92

7. 输入输出重定向

==================

shell 一开始会打开三个文件描述符, 用来输入, 输出, 及显示错误的.

标准输入: 通常是键盘, 文件描述符为 0

标准输出: 通常是屏幕, 文件描述符为 1

标准出错: 通常与标准输出相同(也就是屏幕), 文件描述符为 2

当我们执行下面的命令时, 是直接输出到屏幕的:

$ ls -la

若是想输出到另一文件中, 需要重定向输出:

$ ls -al > myfile

> 输出转向, 会先把文件清空

1> 标准输出

2> 标准出错

>> 输出转向, 追加写入

1>> 标准输出

2>> 标准出错

< 输入转向, 把一文件当作输入

| 把一程序的输出当作另一程序的输入

$ cat < /bin/ls > myfile

$ cat /etc/passwd | grep bash

$ make -j4 > tmpfile 2>&1 &

8. 文件权限

===========

8.1 文件系统

------------

在类 unix 系统中, 文件系统中的数据组合以目录或文件的方式存在,

目录下可有多个子目录和文件, 最顶层的目录是 /, 称为根目录,

就是说, 所有的目录都在根目录之下.

8.2 文件及目录权限

------------------

在类 unix 系统中, 有多用户和组的概念, 一个用户可同时属于多个组,

每个文件或目录的权限属于并且只属于一个用户和一个组:

# ls -l /home/ | grep test1

drwx------ 48 test1 dev 4096 03-28 16:16 test1

~~~~~~~~~~ ~~~~~ ~~~

第一部分 第二部分 第三部分

我们使用 ls -l 可看到, 目录 /home/test1 属于用户 test1 和组 dev.

先暂时不用管 "48" 和 "4096" 是啥意思, 先看看一部分的内容,

这里有 10 个字符, 第一个用于表示目录, 或文件, 或链接文件:

d -- 目录

- -- 文件

l -- 链接文件, 可以指向目录, 也可以指向文件

剩下的 9 个字符分成三部分, 用于表示权限许可:

d rwx --- ---

~~~ ~~~ ~~~

1 2 3

1) 用户的权限, 在上面的例子中, 即表示 test1 用户本身的权限.

r 表示可读, 对应数字 4, 后面用到

w 表示可写, 对应数字 2,

x 表示可执行, 对应数字 1

对于目录来讲, 一定要有 x 权限才能进入的.

2) 组权限, 在这个例子中, 组 dev 没有任何权限.

3) 其它用户权限, 即除了 test1 本身和组 dev 的其它用户.

在这里, 其它用户也没有这个目录的任何权限

有两个命令用于更改一个目录的所属目录和所属组, 以及对应的权限:

a. chown -- 修改所属用户和组

chown test1.dev2 /home/test1 # 把所属组改为 dev2 啦

但这样只能改掉目录 /home/test1, 并不能改掉子目录的组,

如果也想改掉子目录, 那么加上 -R :

chown -R test1.dev2 /home/test1

b. chmod -- 修改用户及组对应的权限

chmod 755 /home/test1 # 改为 755 :)

755 中的每个数字对应上面的一部分,

7 = r (4) + w (2) + x (1)

5 = r + x

如果想在原来的基础加上一个权限, 那要这样:

chmod +x tmpfile # 加上可执行

大家只需会 +x 和数字组合(如 755, 644, 700) 就可以了.

9. 进程管理

============

有时需要把进程放到后台运行, 这样可以不用占用当前的终端,

可以在后面加上 &, 如

$ grep hehe tmpfile > tmpfile.1 &

[1] 22775

shell 会输出后面的 "[1] 22775" 的字样, 意思是当前 shell 在后台有一个进程,

如果这时再输入:

$ sleep 60 &

[2] 22776

当中的 [2] 表示有两个进程在后台运行, 如果想转为前台, 可以这样:

$ fg 1

grep hehe tmpfile > tmpfile.1

下面的那行提示是 fg 的输出, 表示又回到前台啦...

这时如果又想放到后台运行的话, 可先按 ^Z , 表示暂停正在运行的命令:

$ grep hehe tmpfile > tmpfile.1

^Z

[1]+ Stopped grep hehe tmpfile > tmpfile.1

注意的是这是暂停, 想把它放后台运行需要输入 bg 1

fg 和 bg 在没有参数的情况下默认是 1 .

10. shell 脚本

==============

Shell 内建了自己的一套语言, 用于作业管理.

$ ls && echo fail

$ ls || echo fail

最简单的 Shell 脚本就是一系列的命令, 如:

$ cat t.sh

#!/bin/sh

echo "start..."

rm -f tmpfile

cp /bin/ls tmpfile

而 Shell 也提供流程控制: 如

$ cat t.sh

#!/bin/sh

if [ "TERM" = "vt100" ]; then

echo $TERM

fi

if [ "TERM" = "vt100" ]; then

echo $TERM

elsle

echo $TERM

fi

for i in `ls`; do

echo $i

done

但, 通常来说, 我们不需要写复杂的 shell 脚本, 并且, 如果我们需要文本处理,

更不应该使用 shell 脚本, 也就是说, 不应该使用 sed 和 awk, 我们应该使用 perl,

11. Unix 环境开发

==================

a. vim -- 编辑器 [2]

b. perl -- 文本处理 [3]

c. make -- 管理源代码 [4]

本文出自 “永不停止” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: