linux命令--文件和目录操作命令


pwd

"print working directory" 打印工作目录的绝对路径
范例: 在bash命令行显示当前用户的完整路径
系统Bash命令行的提示符是由一个称为PSI的系统环境变量控制的。
修改PSI变量对应的值。
page 15

cd

cd -  切换到当前用户上一次所在的目录路径

tree

-d 只显示目录
-f 显示每个文件的全路径
-i 不显示树枝,常与-f参数配合使用
-L level 便利目录的最大层数,level为大于0的正整数
-F 不同文件类型结尾加不同符号

mkdir

-p 递归创建目录
-v 显示创建过程
-m 设置目录的默认权限 范例: 克隆目录结构
tree -fid --noreport olfboy >> ~/oldboy.txt
cd /tmp
mkdir -p `cat ~/oldboy.txt` # mkdir命令后可以接很多目录名来批量创建目录。
tree -d /tmp/oldboy

touch

有两个功能: 一是创建新的空文件;二是改变已有文件的时间戳属性。
touch stu{1..5} 批量创建文件 GNU/Linux 的文件有三种类型的时间戳 Access: 2018-07-17 14:05:03.361270580 +0800 # 最后访问文件的时间
Modify: 2018-07-17 14:04:59.344291470 +0800 # 最后修改文件的时间
Change: 2018-07-17 14:04:59.344291470 +0800 # 最后改变文件状态的时间

ls

-l 此处的时间属性列默认是显示的文件的最后一次修改时间。
显示完成时间属性的参数:
ls -l --time-style=long-iso ls -l --time-style=long-iso --time=atime # 显示访问时间
mtime:最后修改时间 修改文件内容、文件的mtime会改变
ctime:状态改变时间 修改文件内容、移动文件或改变文件属性等,ctime会改变
atime:最后访问时间 查看文件内容时,atime会改变。 -F 目录的结尾都加上了/
ls -F | grep / 过滤目录
ls -F | grep -v / 过滤普通文件
加上* 表示可执行的普通文件
page 37
-d 只显示目录本身的信息
ls -ld dir1 ls别名
alias lst='ls -l --time-style=long-iso' # 配置命令别名
alias | grep lst # 检查命令别名是否生效
alias lst='ls -l --time-style=long-iso'
lst # 执行命令别名,检查效果。 查找最近更新过得文件
ls -lrt /etc/ -t按时间mtime排序;-r 倒叙;
ls -lrt /etc/ | tail -1 # tail -1 只显示一个文件 删除占用inode节点的垃圾:比如邮件
ls | xargs rm -f 如果文件特别多,rm -rf * 是无法删除的。 输出内容的属性解读:
ls -lhi
inode 索引节点编号
文件类型权限
硬链接个数
属主(属组)
文件或目录的大小
修改时间
名字

cp

-p 保持源文件的所有者、权限信息以及时间属性
-d 源文件是符号链接,仅复制符号链接本身,保留指向的目标文件或目录
-r 递归复制目录
-a 包含了-p、-d、-r
-i 提示用户缺
-t 可以颠倒顺序,cp -t 目标文件 源文件 cp覆盖文件之前不提示是否覆盖的几种方法:
1. 使用命令全路径
which cp # 查看cp的系统别名
/bin/cp file1 file2
2. 命令开头使用反斜线
\cp file1 file2 cp /etc/ssh/sshd_config{,.ori}
原理是bash对大括号的展开操作,展开成/etc/ssh/sshd_config /etc/ssh/sshd_config.ori 再传给cp命令

mv

alias mv # 查看mv的别名

rm

关于删除的经验:
1. 用mv代替rm,不要急着删除,而是先移动到回收站/tmp
2. 删除前务必备份。最好是异机备份。
3. 请用find替代rm
find ./ -type f -name "*.txt" -mtime +7 | xargs rm -f
4. 最多使用 rm -f 文件名。 rm -rf 误删目录时不会有提示。
5. 如果要使用通配符,最多使用rm -f ./* ,rm -rf /oldboy/ * ,会把当前目录下所有目录都删除。
6. 额外补充一点,要慎用 rsync --delete

rmdir

删除空目录
-p 子目录删除后其父目录也为空时,也一并删除。

ln,创建文件间的链接。

无参数, 创建硬链接
-s, 创建软连接(符号链接) 多个文件名指向同一个索引节点(inode),这种情况下的文件就称为硬链接。相当于文件的另一个入口。 ln -s 源文件 目标文件 # 目标文件不能事先存在,需要用ln命令创建。

readlink

-f 显示最后一个非符号链接文件
查看符号链接文件的内容

find 用于查找目录下的文件

-mtime
-n 表示文件更改时间距离现在n天以内
+n n天以前
n 距离现在第n天
-name 只支持*、?、【】等特殊通配符。
find /var/log/ -mtime +5 -name '*.log' # 在/var/log 目录下查找5天前以.log结尾的文件 find ./ -size +10M -size -20M # 查找大于 10M 小于 20M 的文件 find ./ ! -type d # !表示取反,查找不是目录的文件,注意!位置。 find正则表达式: find / -regex ".*find" ls -l 放在-exec的选项中执行:
find ./ -type f -exec ls -l {} \;
;号表示结束,\转义,{}代指前边find查找到的内容。 使用xargs执行mv:
find . -name '*.log' | xargs -i mv {} dir2/ 在/oldboy目录以及子目录下的所有以扩展名.sh结尾的文件中,做字符串替换,吧./hostlists.txt替换为../idctest_iplist。
find /oldboy -name '*.sh' -exec sed -i 's#./hostlists.txt#../idctest_iplist#g' {} \; # 文件多是效率低
find /oldboy -name '*.sh' | xargs sed -i 's#./hostlists.txt#../idctest_iplist#g'
sed -i 's#./hostlists.txt#../idctest_iplist#g' `find /oldboy -name '*.sh'` # 命令语句中如果有反引号,先执行反引号中的命令。 现在有 file1 file2 file3 这 3 个文件打包 . 打包文件为niliu.tar
#tar cvf niliu.tar file1 file2 file3
find ./ -type f -name 'test.txt' | xargs tar -zcvf oldboy01.tar.gz find ./ -type f ! -name 'test1' | xargs rm -f
find /root -maxdepth 1 -type f ! -name '.*' # 只显示一级目录下的文件,不包含隐藏文件 清理指定的内容:
find . -type f | xargs sed -i '/*content*/d' 只保留7天的日志:
find . -type f -name 'access.log' -mtime +7 | xargs rm -f 将找到的文件移动到指定位置:
find . -name '*.log' | xargs -i mv {} dir2/
find . -name '*.log' | xargs mv -t dir2/ # 因为find找到的结果通过xargs会默认作为命令的目标,即mv dir2/ 目标,显然是错误的。
mv `find . -name '*.log'` dir2/

xargs

-i 以{}代替前边的结果
-p 提示让用户确认是否执行后边的命令,y执行,n不执行。
-n 指定每行的最大参数量,可以将标准输入的文本划分为多行,每行n个参数,默认空格分隔。 多行输入变单行:
xargs < test.txt

rename

rename from to file
from: 需要替换或处理的字符串
to: 替换后的内容
file: 待处理的文件,可以用* 匹配所有文件。 rename .jpg .oldboy *.jpg

basename

dirname

chattr 改变文件的扩展属性

chmod只是改变文件的读、写、执行权限,更底层的属性控制是chattr来改变的。
设置只能往文件追加内容,不能删除文件。
chattr +a test 给文件枷锁,使其只能是只读。
chattr +i test

lsattr

查看文件的扩展属性: lsattr file1.txt
查看目录的扩展属性:
chattr +i dir1 # 目录也可以加只读权限。
lsattr -d dir1

file

显示文件的类型

md5sum 计算和校验文件的md5值

-c 从指定文件中读取MD5校验值,并进行校验。
md5sum oldboy.txt > md5.log # 先生成校验文件
md5sum -c md5.log # 检查使用-c参数

chown 用于改变文件或目录的用户和用户组。

常用格式:
chown 用户 文件或目录 # 仅仅授权用户
chown :组 文件或目录 # 仅仅授权组
chown 用户:组 文件或目录 # 表示授权用户和组 其中的:可以用.来替代;
用户和组名,必须是实际存在的。 -R 递归改变目录的用户和用户组

chmod 改变文件或目录权限

-R 递归处理
文件、目录的读、写、执行权限说明: page85

chgrp

只用于更改文件的用户组,功能被chown取代了。

umask 显示设置权限掩码

文件权限计算:  666 - umask;
目录权限计算: 777 - umask; umask 044
touch file2;ll -h file2 # 两条命令通过分号链接在一起,可以再一起执行。

linux命令_文件目录操作命令的更多相关文章

  1. Linux命令_磁盘管理_查看磁盘或目录的容量

    软件环境:虚拟机VM12,Linux版本 CentOS 7.3 命令 df (disk filesystem) 用于查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认以KB为单位显示 ...

  2. Linux命令_搜索文件

    一.用which命令查找可执行文件的绝对路径 which命令用来查找PATH环境变量中出现的路径下的可执行文件. 二.用whereis命令查找文件 whereis命令通过预先生成的一个文件列表库查找与 ...

  3. 【Linux命令】文件目录管理命令7个(touch、mkdir、cp、mv、rm、dd、file)

    目录 touch创建空白文档或设置文件时间 mkdir创建空白目录 cp复制文件或目录 mv剪切文件或重命名文件 rm删除文件或目录 dd按照指定大小和个数的数据库来复制文件或转换文件 file查看文 ...

  4. Linux命令查找文件目录

    座右铭:长风破浪会有时,直挂云帆济沧海. linux一般查看文件或者目录有几种方法. /查看文件类容--------cat/more/less/head/tail   只能查看文本型(txt) (1) ...

  5. Linux 命令:文件目录操作与实例

    来源: http://blog.51cto.com/yuanzhitang/2056994 本文介绍基础的文件操作:创建,移动,编辑,删除 文件和文件夹   命令与案例:   mkdir 创建目录 - ...

  6. Linux命令_用户身份切换

    命令 su 格式为:su [ - ] username,后面可以跟 - ,也可以不跟. 普通用户的su命令不加username时,就相当于切换到root用户,反之亦然.当su 命令加上 - 后,会初始 ...

  7. Linux命令_用户和用户组管理

    新增组的命令 groupadd 格式:groupadd [-g GID] groupname 如果不加-g选项,则按照系统默认的gid创建组.跟uid一样,gid也是从1000开始的. 我们也可以如下 ...

  8. Linux学习笔记2——Linux中常用文件目录操作命令

    ls 显示文件和目录列表 -l 列出文件的详细信息 -a 列出当前目录所有文件,包含隐藏文件 mkdir 创建目录 -p 父目录不存在情况下先生成父目录 cd 切换目录 touch 生成一个空文件 e ...

  9. win10的power shell可以学习少部分linux命令_功能与cmd类似

    更新帮助文件:

随机推荐

  1. sql server driver ODBC驱动超时

  2. python 在window 系统 连接并操作远程 oracle 数据库

    1,python 连接 oracle 需要 oracle 自身的客户端  instantclient,可以去官网下载自己需要的版本, https://www.oracle.com/technetwor ...

  3. leetcode581

    public class Solution { public int FindUnsortedSubarray(int[] nums) { , end = -, min = nums[n - ], m ...

  4. django不定义model,直接执行自定义SQL

    如果不想定义model,直接执行自定义SQL,可如下操作: 1. 通过 connections获取db连接,如果是多个数据库,connections['dbName'] 来选择 2. 获取游标 cur ...

  5. ntp时间同步参考

    https://blog.csdn.net/kamereon/article/details/54344114

  6. matplotlib坐标轴的一些操作

  7. 567. Permutation in String判断某字符串中是否存在另一个字符串的Permutation

    [抄题]: Given two strings s1 and s2, write a function to return true if s2 contains the permutation of ...

  8. [leetcode]31. Next Permutation下一个排列

    Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...

  9. Selenium 学习汇总

    Commands (命令) Action 对当前状态进行操作 失败时,停止测试 Assertion 校验是否有产生正确的值 Element Locators 指定HTML中的某元素 Patterns ...

  10. vue修改端口号

    vue修改端口号   默认端口号 修改端口号 重新启动项目 npm run dev