文件操作
-
创建(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