当前位置 博文首页 > 直心I:文件操作命令操作详解(Linux)

    直心I:文件操作命令操作详解(Linux)

    作者:[db:作者] 时间:2021-09-22 22:39

    文件操作

    • 创建(touch)

      touch 文件名
      
    • 文件内容覆盖追加(echo)

      #覆盖>
      echo  'hello zyc53'  >a.txt  #将hello zyc53输出到a.txt文件中,会覆盖a.txt文件原来的内容,没有a.txt文件,则会创建
      
      #追加>>
      echo '吃饭了吗' >> b.txt #将显示内容追加到文件末尾,?件不存在则创建
      
    • 移动及文件后缀修改(mv/remame)

      mv  源文件A  目标文件B    #类似剪切,销毁原件
       
      mv  c.txt    ./D/ #将c.txt移动到子目录D下,?件名不变--------文件移目录里 
      mv  ../c.txt ./c1.txt #移动到当前?录下,改名为c1.txt------换名
      mv  e.txt    f.txt  #如果在同?个目录就是文件重命名 将e.txt重命名f.txt
      
      rename   's/tx/txt/'   2.tx     #将2.tx替换为2.txt
      
    • 拷贝文件(cp)

      cp  源?文件  ?标?文件
      sudo cp -r 源目录 目标目录 #递归拷贝目录 -------sudo cp -r 4/8 5/7/
      
    • 删除文件(rm)

      sudo rm ?件名
      sudo rm -i 文件名 #删除前逐?一确认
      sudo rm -f 文件名 #删除?文件不不带提示
      sudo rm -rf 目录名 #递归删除目录,不管目录是否为空***慎用
      
    • 查看文件内容

      (cat-内容输出/ head内容前几行 /tail内容最后几行/ watch实时显内容/ more从前往后看/less和more类似/stat文件详细信息)

      cat: 
      	cat ?件名 								#输出?件内容,从前往后输出,
      	cat ?件1 文件2 >> ?件3 		# 将两个?件合并指定文件
      	
      tac:
      tac 文件名
      														 #cat的反写,从后往前输出
      head:
      head -n N 文件名							 #显示文件的前几行,指定查看N行
      
      tail:
      tail -n  N 文件名					   #文件最后N行
      tail -f	cat 文件名						 #实时显示文件内容
      
      watch:
      watch -d -n 秒数 cat ?件名   #实时显示文件内容
      
      vim:
      vim A.txt. 										#编辑A.txt文件内容
      
      more:
      more ?件名 										#从前往后查看,可以翻屏 ,不能往前翻 回车一行行查看,空格翻屏(f翻屏) q退出
      
      less:
      less 文件名 										#和more类似,可以前翻页,g?页 G尾页,b前翻页,空格和f后翻页,q退出
      
      stat:
      stat 文件名 										#查看文件详细信息
      
      #?件的三个时间:
      atime: accesstime 						#访问时间
      mtime:modifytime 							#修改时间
      ctime: changetime 						#修改状态时间(修改文件元数据)
      
    • 文件名及内容(find/grep)

      • find(搜索指定文件)
      find [路径] [参数] [?件名]
      			-name  按?件名查找
      			-iname 按?件名查找,不区分?小写
      			-mtime +/-n 						 #-n表示n天以内修改的文件,+n表示修改超过n天的文件 
      			-user 									 #按?件属主查找
      			-size [+/-]n[c/k/M/G] 	 #查找?文件长度为n块,+表示大于,-表示小于; c是字节
            -perm 权限数值					  #按照文件权限进行查找
            -maxdepth N							 #目录深度
            -ls											 #以列表形式显示
            -type [f/d/l]						 #按类型查看
            -exec 执?行shell命令,形式: -exec command {} \
            
      find / -name  "?件名"  				 #从根目录查找指定文件名的?件,如果不指定目录,则从当前目录查找
      find . -name  "?件名" 				 #从当前目录查找指定文件名的文件
      find   -name  "?件名"					 #从当前目录查找指定文件名的文件
      
      find /csl/sh1702 -name "2.txt"  #查找指定目录的文件
      find /tools -mtime -3 					#查找tools目录下修改时间是3天以内的文件
      find /tools -mtime +3 					#查找tools目录下修改时间是3天以上的文件
      find -mtime -3 -maxdepth 1 -ls
      find /tools -size 12c 					#查找长度为12字节的文件
      find /var -size +10k -size -100k -name '*.log' 		#在/var目录下,查找10-100k
      find -size +10k -maxdepth 1 -ls										
      
      #按?件的所属?户查找
      find -maxdepth 1 -user root			
      
      #删除当前目录及其子目录下的所有后缀为txt的文件,注意{}和\中间有空格,最后有?个;
      find . -name '*.txt' -exec rm {} \;
       
      #只查找当前目录下,权限是700的?文件,并以列表形式显示 
      find -perm 700 -maxdepth 1 -ls
      sudo find -maxdepth 2 -name '1.txt' -ls
      
      • grep
      #grep 是global search regular expression(RE) and print out the line的缩写。即全面搜索正则表达式并把行打印出来。
      
      grep [options] 'pattern' filename 
      			-i 不不区分?小写
      			-c 只显示匹配行的数量量
      			-r 递归查找子目录
      			-l 列出?件内容符合指定的范本样式的文件名称。 
      			-n 显示行号
      			-w 只匹配单词,不是匹配单词一部分
      			-E 按正则表达式搜索
      			--color 以不同颜?显示匹配的关键字 
      			--include '*.py' #仅搜索py?文件 --exclude '*.py' #不不搜索py?文件
      
      # 在1.txt搜索this,要按照完整单词的模式进行匹配,并且显示匹配行 
      grep -n -w 'this' 1.txt
      
      #在当前目录下所有文件中搜索this,并不同颜?显示关键字 
      sudo grep 'this' * --color
      
      显示匹配行数
      sudo grep -c 'this' 1.txt
      
      搜索指定的1.txt,递归查找子目录
      grep -r -w -l 'this' --include '1.txt'
      
      # 显示当前目录下所有的文件,不显示目录 
      ls -la | grep -E '^-'
      
      | 管道符,他可以将前一个命令的输出作为后?个命令的输入
      
    • 命令查找(which/whereis)

      which 命令名 #查找命令
      
      whereis ?件名 #只能搜索命令、源文件、?进制文件
      
    • 文件内容统计(wc)

      wc [options] [?件列表]
      		-l 统计有多少行
      		-w 统计有多少单词
      $ wc -l  /etc/passwd #统计passwd有多少?户
      
    • 文件逐行读入(awk)

      awk '{pattern + action}' {filenames}
      
      cat /etc/passwd |awk -F ':' '{print $1}' 			# $1显示第?一列列 -F 指 定分割符为':'
      																							# 列数从左向右: 1,2,3...
      
    • 报告或删除文件中重复的行,只比较相邻行(uniq)

      用法:	uniq [选项]... [文件]
      						-c 				//在每行前加上表示相应行?出现次数的前缀编号 
      						-d 				//只输出重复的?
      						-D 				//只输出重复的?,有?行输出?行
      						-i 				//忽略略?大?小写
      
    • 升序排序(sort)

      sort将?件/文本的每?行作为?个单位,相互?较,?较原则是从?字符向后,依次按ASCII码值进??较,最后将他们按升序输出。
      
       
      sort(选项)(参数) 
      		-u忽略略相同?行行
      		-k 按指定列列排序 -n 按数值排序 -t 分割符
      		-r 逆序
      #指定passwd?文件按第三列列 的数值?比较,列列之间的分隔符为: 
      cat /etc/passwd | sort -n -t ':' -k 3
      
      #查找你最常用的10条命令
      history | awk '{print $2}' | sort | uniq -c | sort -r -n -k 1 |
      head -n 10
      
    cs
    下一篇:没有了