Linux 文件和目录操作命令(一)
1、cd
(change directory)切换到指定目录
- 返回上次目录 .. 返回上层目录 回车 返回主目录 / 根目录
2、cp
(copy)复制文件或目录
-r -R 递归复制该目录及其子目录内容 -p 连同档案属性一起复制过去 -f 不询问而强制复制 -s 生成快捷方式 -a 将档案的所有特性都一起复制 cp -r /home/hj/a /tmp
3、find
查找目录及目录下的文件
选项与参数: 1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime 和-amin,-cmin与-mmin,以 -mtime 说明 -mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的档案; -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的档案档名; -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的档案档名。 -newer file :file 为一个存在的档案,列出比 file 还要新的档案档名 2. 与使用者或组名有关的参数: -uid n :n 为数字,这个数字是用户的账号 ID,亦即 UID -gid n :n 为数字,这个数字是组名的 ID,亦即 GID -user name :name 为使用者账号名称!例如 dmtsai -group name:name 为组名,例如 users ; -nouser :寻找档案的拥有者不存在 /etc/passwd 的人! -nogroup :寻找档案的拥有群组不存在于 /etc/group 的档案! 3. 与档案权限及名称有关的参数: -name filename:搜寻文件名为 filename 的档案(可使用通配符) -size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的档案。这个 SIZE 的规格有: c: 代表 byte k: 代表 1024bytes。所以,要找比 50KB还要大的档案,就是『 -size +50k 』 -type TYPE :搜寻档案的类型为 TYPE 的,类型主要有: 一般正规档案 (f) 装置档案 (b, c) 目录 (d) 连结档 (l) socket (s) FIFO (p) -perm mode :搜寻档案权限『刚好等于』 mode的档案,这个mode为类似chmod的属性值,举例来说,-rwsr-xr-x 的属性为4755! -perm -mode :搜寻档案权限『必须要全部囊括 mode 的权限』的档案,举例来说, 我们要搜寻-rwxr--r-- 亦即 0744 的档案,使用-perm -0744,当一个档案的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。 -perm +mode :搜寻档案权限『包含任一 mode 的权限』的档案,举例来 说,我们搜寻-rwxr-xr-x ,亦即 -perm +755 时,但一个文件属性为 -rw-------也会被列出来,因为他有 -rw.... 的属性存在! 4. 额外可进行的动作: -exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的结果。 -print :将结果打印到屏幕上,这个动作是预设动作! eg: find / -perm +7000 -exec ls -l {} ; ,额外指令以-exec开头,以;结尾{}代替前面找到的内容 | xargs -i 默认的前面输出用{}代替 eg: find . -name "*.log" | xargs -i mv {} test4
示例:
# 按文件名查找 # 查找 /etc 目录下所有 passwd find /etc/ -name passwd # 按查找深度 :/home/dly# find /etc -maxdepth 1 -name passwd /etc/passwd :/home/dly# find /etc -maxdepth 2 -name passwd /etc/cron.daily/passwd /etc/pam.d/passwd /etc/passwd # 按文件大小 :/home/dly# find /mnt -size 20k :/home/dly# find /mnt -size -20k # 小于 20k /mnt :/home/dly# find /mnt -size +20k # 大于 20k # 按文件类型 find /dev -type f # 普通文件 find /dev -type b # 块设备 find /dev -type s # 套接字 find /dev -type p # 管道 find /dev -type d # 目录 # 按权限查找 ##查找文件权限为404的文件 [ mnt]# find /mnt -perm 404 /mnt/file2 ##查看文件权限中u位有r权限,并且o位有r权限的文件 [ mnt]# find /mnt -perm -404 /mnt /mnt/file1 /mnt/file2 ##查看文件权限中u位有r权限,或者o位有r权限的文件 [ mnt]# find /mnt -perm /404
4、mkdir
(make directory)创建文件夹
-p 递归创建目录,若父目录不存在则依次创建 -m 自定义创建目录的权限 eg:mkdir -m 777 hehe -v 显示创建目录的详细信息
5、mv
(move)移动或重命名文件(重命名时会删除源文件,cp 不会)
-b 覆盖前做备份 -f 如存在不询问而强制覆盖 -i 如存在则询问是否覆盖 -u 较新才覆盖 -t 将多个源文件移动到统一目录下,目录参数在前,文件参数在后 eg: mv a /tmp/ 将文件a移动到 /tmp目录下 mv a b 将a命名为b mv /home/zenghao test1.txt test2.txt test3.txt
6、pwd
(print working directory)显示当前工作目录的绝对路径。
7、rename
重命名文件
Usage:rename [-v] [-n] [-f] perlexpr [filenames] -v(verbose) 打印被成功重命名的文件 -n(no-act) 只显示将被重命名的文件,而非实际进行重命名操作 -f(force) 覆盖已经存在的文件 perlexprPerl语言格式的正则表达式 files需要被替换的文件(比如*.c、*.h),如果没给出文件名,将从标准输入读 【常用通配符说明】 ? 表示一个任意字符 * 表示一个或一串任意字符 ------------------------------------------------- 【常用正则表达式符号说明】 ^ 匹配输入的开始位置 $ 匹配输入的结尾 . 匹配除换行符外的任意字符 + 匹配前一个字符一次或多次 例如,"zo+"可以匹配"zoo",但不匹配"z" [a-z] 表示某个范围内的字符,例如,"[a-z]"匹配"a"与"z"之间的任何一个小写字母字符。 [^m-z] 否定的字符区间。与不在指定区间内的字符匹配。
示例:
[ www]# rename 's/\.sh/\.php/' * #将当前目录下.sh后缀的文件,变成.php [ www]# rename 's/$/\.bak/' /home/www/*.php #给www目录下的.php加上bak后缀 [ www]# rename 's/^/bak_/' *.bin #给当前目录下的.bin后缀文件加上bak_前缀 [ www]# rename 's/\.bin$//' * #批量删除当前目录下所有文件的.bin 后缀 [ www]# rename 's/A-Z/a-z/' * #修改当前目录所有文件名为小写
8、rm
(remove)删除一个或多个文件或目录
-r 删除文件夹 -f 删除不提示 -i 删除提示 -v 详细显示进行步骤
9、rmdir
(remove empty directories)删除空目录
-v 显示执行过程 -p 若自父母删除后父目录为空则一并删除
10、touch
创建新的空文件,改变已有文件的时间戳属性
-a 只修改存取时间 -m 值修改变动时间 -r eg:touch -r a b ,使b的时间和a相同 -t 指定特定的时间 eg:touch -t 201211142234.50 log.log -t time [[CC]YY]MMDDhhmm[.SS],C:年前两位 eg: touch a.txt # 新建文件 a.txt
11、tree
以树形结构显示目录下的内容
-a 显示所有文件和目录。 -A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。 -C 在文件和目录清单加上色彩,便于区分各种类型。 -d 显示目录名称而非内容。 -D 列出文件或目录的更改时间。 -f 在每个文件或目录之前,显示完整的相对路径名称。 -F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。 -g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。 -i 不以阶梯状列出文件或目录名称。 -I<范本样式> 不显示符合范本样式的文件或目录名称。 -l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。 -n 不在文件和目录清单加上色彩。 -N 直接列出文件和目录名称,包括控制字符。 -p 列出权限标示。 -P<范本样式> 只显示符合范本样式的文件或目录名称。 -q 用"?"号取代控制字符,列出文件和目录名称。 -s 列出文件或目录大小。 -t 用文件和目录的更改时间排序。 -u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。 -x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。 -L 等级/深度 eg: tree /home/dly -L 1 # 深度为 1 tree -a # 显示所有文件和目录
12、basename
获取路径中的文件名或路径名
# 获取末尾的文件名或路径名 $ basename /etc/passwd passwd $ basename /etc/man.config man.config $ basename /etc etc # 去掉末尾的指定字符,第二个参数指定后缀名即可 $ basename /etc/man.config man.config $ basename /etc/man.config .config man # 取消指定字符 $ basename namedb.data db.data
13、dirname
显示指定路径除了文件名之外的路径前缀
dirname /usr/bin/ -> "/usr" dirname dir1/str dir2/str -> "dir1" followed by "dir2" dirname stdio.h -> "."
14、chattr、lsattr
改变(查看)文件的拓展属性
:/home/dly/test# lsattr a.txt -------------e-- a.txt # #设置该文件不能进行任何形势的修改 :/home/dly/test# chattr +i a.txt :/home/dly/test# lsattr a.txt ----i--------e-- a.txt chattr -i nginx.conf #取消-i的权限设置 chattr +a /var/log/messages #让某个文件只能往里面追加数据,但不能删除
15、file
显示文件类型
-b 不输出文件名 (简要模式). -c 检查时打印输出幻数文件的解析结果.常与 -m 一起使用,用来在安装幻数文件之前调试它. -f 命名文件 从在参数表前的 命名文件 中读出将要检查的文件名(每行一个文件).要有 命名文件 ,或者至少有一个文件名参数; 如果要检查标准输入, 使用``-作为文件参数. -m list 指定包含幻数的文件列表.可以是单个文件,也可以是 用冒号分开的多个文件. -n 每检查完一个文件就强制刷新标准输出. 仅在检查一组文件时才有效. 一般在将文件类型输出到管道时才采用此选项. -v 打印程序版本并退出. -z 试图查看压缩文件内部信息. -L (在支持符号链接的系统上)选项显示符号链接文件的原文件, 就像 ls(1) 命令的like-named 选项. -s 通常, file 只是试图去检查在文件列表中那些 stat(2) 报告为正常文件的文件的类型.由于读特殊文件将可能导致 不可知后果,所以这样可以防止发生问题.使用 -s 选项时 file 命令也将去读文件列表中的块特殊文件和字符特殊文件. 一般用于从原始磁盘分区中获得文件系统类型,此文件为块 特殊文件. 这个选项也导致 file 命令忽略 stat(2) 报告的文件大小,因为在有些系统中原始磁盘分区的大小报告为0.
示例:
$ file * # 查看当前文件的类型 $ file a.txt # 查看单个文件的类型 $ file -z test.bz2 # 查看压缩文件中的文件类型
16、md5sum
计算和校验文件的 MD5 值
用法:md5sum [选项]... [文件]... 显示或检查 MD5(128-bit) 校验和。 若没有文件选项,或者文件处为"-",则从标准输入读取。 -b, --binary 以二进制模式读取 -c, --check 从文件中读取MD5 的校验值并予以检查 -t, --text 以纯文本模式读取(默认) 以下三个选项在进行校验时非常有用: --quiet 不为校验成功的文件输出OK --status 不输出任何内容,使用退出状态号显示成功 -w, --warn 对格式不准确的校验和行进行警告 --strict with --check, exit non-zero for any invalid input --help 显示此帮助信息并退出 --version 显示版本信息并退出 校验和会按照RFC 1321 规范生成。当进行检查时,给出的输入格式应该和程序的输出 样板格式相同。默认的输出模式时输出一行校验和的校验结果,并有一个字符来 表示文件类型("*"代表二进制," "代表纯文本),并同时显示每个文件的名称
示例:
# 以二进制形式显示 md5 :/home/dly/test# md5sum -b a.txt d41d8cd98f00b204e9800998ecf8427e *a.txt # 生成md5加密检验和 :/home/dly/test# md5sum a.txt > a.md5 :/home/dly/test# ls 1.jpg 2.jpg a a.md5 a.txt :/home/dly/test# cat a.md5 d41d8cd98f00b204e9800998ecf8427e a.txt # 检验与文件是否一致 :/home/dly/test# md5sum -c a.md5 a.txt: 确定
相关推荐
qonsnow 2013-03-27
kernelstudy 2016-05-16
朱登凯 2014-12-10
plusz 2014-02-16
哥哥的CSDN集 2012-04-12
Idreamlife 2012-02-23
kvikon 2011-11-14
xiefei0 2011-10-07
hairetz 2011-09-12
小惠 2011-09-07
生活随笔 2011-08-24
菜鸟上路CCLinux 2011-06-17
RayDon 2011-06-14
WenCoo 2011-05-17
nuligannima 2010-12-30